#### php判斷函數,類,類方法是否存在
* * * * *
做php開發中,如果遇到自己不能修改服務器的相關配置也不能知道服務器某些功能是否開啟的情況下,直接使用某些特殊的函數會導致程序報錯。
比如curl_init這種系統函數。
當服務器未開啟curl相關服務的時候,直接使用curl系列函數會報Call to undefined function curl_init()......這樣的錯誤。
對于出現這種情況該如何辦呢?
這里我們就需要涉及到判斷某個方法是否存在的問題了,如果存在該方法則使用該方法,如果不存在該方法則使用另外的方法。
這里對于如何判斷一個函數,類以及類中的方法是否存在做了一個整理:
(1)php判斷系統函數或自己寫的函數是否存在
~~~
bool function_exists ( string $function_name )
~~~
判斷函數是否已經定義,例如:
~~~
if(function_exists('curl_init')){
curl_init();
}else{
echo 'not function curl_init';
}
~~~
(2)php判斷類是否存在
~~~
bool class_exists ( string $class_name [, bool $autoload = true ] )
~~~
檢查一個類是否已經定義,一定以返回true,否則返回false,例如:
~~~
if(class_exists('MySQL')){
$myclass=new MySQL();
}
~~~
(3)php判斷類里面的某個方法是否已經定義
~~~
bool method_exists ( mixed $object , string $method_name )
~~~
檢查類的方法是否存在,例如:
~~~
$directory=new Directory;
if(!method_exists($directory,'read')){
echo '未定義read方法!';
}
~~~
#### PHP獲取當前類名、方法名
* * * * *
1. __CLASS__ 獲取當前類名
2. __FUNCTION__ 當前函數名(confirm)
3. __METHOD__ 當前方法名 (bankcard::confirm)
4. __FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
5. __CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
6. __METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
注:這些常量前后均是兩個下劃線。
get_class(class name);//取得當前語句所在類的類名
~~~
get_class_methods(class name);//取得class name 類的所有的方法名,并且組成一個數組
get_class_vars(class name);//取得class name 類的所有的變亮名,并組成一個數組
~~~
可用get_class_methods方法來獲取某個類或對象的所有方法名。
定義一個類class Cls150518{ public function getprop1();}
print_r(get_class_methods('Cls150518'));將會打印出Cls150518類的所有方法,此處會打印出"getprop1"。
在動態方法調用的地方加上一個判斷:
if(in_array($methodName,get_class_methods('Cls150518')))就可以判斷動態調用的方法在類Cls150518中是否存在。
更保險的做法是用is_callable,該方法可以判斷動態方法是否存在且可被調用,有些方法如Private方法盡管存在但不能被調用。
is_callable的使用形式:
$cls150518 = new Cls150518();
is_callable(array($cls150518 , 'getProp1'));
如果可調用返回true,否則返回false。
- 數組
- 深拷貝
- 數組操作
- 交/并/合
- 差值
- 搜索
- 排序
- 貨幣
- 字符串
- 補全
- heredoc
- session
- 注銷
- 限時自動注銷
- 日期時間
- 日期時間
- 某月首尾
- 格式判斷
- 年齡計算
- 時間函數
- strtotime
- 版本升級
- $HTTP_RAW_POST_DATA
- 正則函數等
- 版本比較
- php5.3 PHP5.4 PHP5.5 php5.6 新特性
- PHP注釋
- URL地址
- 頁面超時
- 類方法
- 靜態方法
- 子類靜態方法
- 普通方法和靜態方法
- call_user_func 和 call_user_func_array
- 函數
- 動態函數
- 數組循環
- Math函數
- 取整
- 除數余數
- 運行模式
- CLI 模式
- 常用CLI命令
- 檢測環境支持php_cli模式?
- 調試
- 調試工具
- FirePHP
- ChromePHP
- 內置服務器
- 500 錯誤處理
- 命令行
- 遠程操作
- HTTP
- HTTP headers
- 用例
- 保留字
- 教程
- PHP實戰教程-0基礎快速入門
- 接口與抽象類
- 抽象類與接口的區別
- 魔術方法
- 私有屬性方法
- 構造/析構方法
- PHP Error 和 Logging 函數
- 類
- const