PHP賦值函數的利用需求

來源:互聯網
上載者:User

標籤:echo   二維   寫代碼   位元組   面對對象   error   close   site   case   

拿一段PHP代碼來說

<?phpclass Site {  /* 成員變數 */  var $url;  var $title;    /* 成員函數 */  function setUrl($par){     $this->url = $par;  }    function getUrl(){     echo $this->url . PHP_EOL;  }    function setTitle($par){     $this->title = $par;  }    function getTitle(){     echo $this->title . PHP_EOL;  }}?>

這一段代碼是比較基礎的面對對象代碼,成員變數和成員函數,我們可以看到成員函數中setUrl()和setTitle()分別負責的是給$url和$title進行賦值,這一切都沒有什麼問題,直到今天看到一段還原序列化代碼

<?php$x = new aclass(‘a‘,‘b‘);$vx = serialize($x);

代碼執行個體化了aclass類,直接把字串 a 和 b 作為參數傳入了類中....就突然想,既然可以直接在類執行個體化的時候賦值,為什麼一定要用賦值函數呢?豈不是多此一舉了嗎?一直不解,就接著寫代碼,沒寫多久就發現了其實有這種需求

<?php//上傳檔案配置$allowtype = array("gif", "png", "jpg");$size = 2000000;$path = "./uploads/";//判斷檔案是否上傳到伺服器if($_FILES[‘myfile‘][‘error‘] > 0) {    echo ‘上傳錯誤:‘;    switch ($_FILES[‘myfile‘][‘error‘]) {        case 1:            die(‘上傳檔案大小超出了PHP設定檔中約定值: upload_max_filesize‘);        case 2:            die(‘上傳檔案大小超出了表單中的約定值:max_file_size‘);        case 3:            die(‘檔案只被部分上傳‘);        case 4:            die(‘沒有上傳任何檔案‘);        default:            die(‘未知錯誤‘);    }} //擷取檔案尾碼名$hz = array_pop(explode(".", $_FILES[‘myfile‘][‘name‘]));//匹配尾碼名if(!in_array($hz, $allowtype)) {    die("這個檔案類型{$hz}不允許!");}//檔案大小判斷if($_FILES[‘myfile‘][‘size‘] > $size) {    die("超過了允許的位元組大小:{$size}");}//檔案名稱$filename = date("YmdHis").rand(100,999).".".$hz;//判斷是否為上傳檔案if (is_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘])) {    if (!move_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘], $path.‘/‘.$filename)) {        die(‘問題:不能將檔案移動到指定目錄。‘);    }}else{    die("問題:上傳檔案{$_FILES[‘myfile‘][‘name‘]}不是一個合法檔案: ");}//序列化引用類$v = new getImgnewcode($path.‘/‘.$filename,NULL,$_FILES[‘x‘],$_FILES[‘y‘]);$sv = serialize($v);$svWrite = fopen(‘./post.txt‘, ‘a+‘) or die(‘開啟檔案失敗‘);fwrite ($svWrite, $sv.‘\n‘);fclose ($svWrite);

這是某個背景片段代碼,功能是管理員上傳一張海報,然後設定好二維碼的位置,在前台使用者通過輸入網址產生的二維碼圖片通過getImgnewcode類進行海報的合成。但是在這種情況下,使用者的URL還為未知數,所以我提前傳入的值為NULL

$v = new getImgnewcode($path.‘/‘.$filename,NULL,$_FILES[‘x‘],$_FILES[‘y‘]);

等到還原序列化以後,我們就不可以修改執行個體化類的時候直接帶入的參數了,必須通過類中定義的賦值函數來完成變數的重新賦值

 

PHP賦值函數的利用需求

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.