php函數method_exists()與is_callable()的區別

來源:互聯網
上載者:User

標籤:

在編程中,我們有的時候需要判斷某個類中是否包含某個方法,除了使用反射機制,PHP還提供了method_exists()和is_callable()方法進行判斷。那麼兩則區別是什麼呢?

已知類檔案如下:

class Student{    private $alias=null;    private $name=‘‘;    public function __construct($name){        $this->name=$name;    }    private function setAlias($alias){        $this->alias=$alias;    }    public function getName(){        return $this->name;    }}

當方法是private,protected類型的,method_exists會報錯,is_callable會返回false。

執行個體

下面是判斷某一對象中是否存在方法getName

通過method_exists實現
$xiaoming=new Student(‘xiaoming‘);if (method_exists($xiaoming, ‘getName‘)) {       echo ‘exist‘;}else{    echo ‘not exist‘;}exit();

輸出exist

通過is_callable實現
$xiaoming=new Student(‘xiaoming‘);if (is_callable(array($xiaoming, ‘getName‘))) {       echo ‘exist‘;}else{    echo ‘not exist‘;}exit();

輸出exist

下面是判斷某一對象中是否存在方法setAlias
當使用method_exists的時候報錯如下

當使用is_callable的時候,輸出not exist

php函數method_exists()與is_callable()的區別

聯繫我們

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