PHP參數類型限制

來源:互聯網
上載者:User
PHP如同其他語言(OC,Java),也引入了參數類型的檢查,不過,PHP只有數組和對象兩種限定類型,諸如string、integer這樣的限定類型是沒有的。參數類型限制,這個不論是介面,抽象類別,函數,方法,在5.3+以上版本都可以使用,不過目前只能聲明 array object 這兩種.

這樣做的好處:

①:可以協調編碼,至少我不用看注釋或代碼,就知道該傳個怎樣的參數進去。

②:對傳入的對象使用型別宣告,可不需要在函數內使用 is_a 函數鑒別傳入對象是否合法而把甄別工作交予編譯器完成

is_a -- 如果對象屬於該類或該類是此對象的父類則返回 TRUE

class User{     public $name;     public $password;     function __construct($name,$password){         $this->name=$name;         $this->password=$password;     } }//參數可以指定物件類型function f1(User $user){     echo $user->name,”,”,$user->password; }//參數可以指定數群組類型function f2(array $arr){}//參數不可以指定基本類型,下面一句會出錯function f3(string $s){}


好的,接下來進行驗證:

當給f1()函數傳入字串時,會報錯:

$a = 'xiaojun';

$ret = f1($a);

錯誤:

PHP Catchable fatal error: Argument 1 passed to f1() must be an instance of User, string given, called in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 16 and defined in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 11

錯誤描述的很清楚,必須給函數傳遞一個User的執行個體化對象。

這樣才是正確的:

// 執行個體化對象,並初始化$user_obj = new User("kaiyi", '123456');$ret = f1($user_obj);


  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.