面向對象
常量
可以把在類中始終保持不變的值定義爲常量。在定義和使用常量的時候不需要使用 $ 符號。
常量的值必須是一個定值,不能是變量,類屬性,數學運算的結果或函數調用。
自 PHP 5.3.0 起,可以用一個變量來動態調用類。但該變量的值不能爲關鍵字(如 self,parent 或 static)。
常量的用法
<?php
class MyClass{
const constant = '常量值';
function showConstant() {
echo self::constant . PHP_EOL;
}
}
echo MyClass::constant . PHP_EOL;
$classname = "MyClass";
echo $classname::constant . PHP_EOL;?
$class = new MyClass();
$class->showConstant();
echo $class::constant;
?>
Static 關鍵字
聲明類屬性或方法爲 static(靜態),就可以不實例化類而直接訪問。
靜態屬性不能通過一個類已實例化的對象來訪問(但靜態方法可以)。
由於靜態方法不需要通過對象即可調用,所以僞變量 $this >在靜態方法中不可用。
靜態屬性不可以由對象通過 -> 操作符來訪問。
在 PHP ?中,可以用一個變量來動態調用類。但該變量的值不能爲關鍵字
1、關鍵字 self,parent 或 static。
代碼
<?php
class Foo {
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
print Foo::$my_static . PHP_EOL;
$foo = new Foo();
print $foo->staticValue() . PHP_EOL;
?>
is_callable — 檢測參數是否爲合法的可調用結構
__call() 方法用於監視錯誤的方法調用。
爲了避免當調用的方法不存在時產生錯誤,可以使用 __call() >方法來避免。該方法在調用的方法不存在時會自動調用,程序仍會繼續執行>下去。
語法:
function __call(string $function_name, array $arguments)
{
}
該方法有兩個參數,第一個參數 $function_name 會自動接收不存在的方法名,第二個 $args 則以數組的方式接收不存在方法的多個參數。
在類裏面加入:
function __call($function_name, $args)
{
echo "你所調用的函數:$function_name(參數:<br />";
var_dump($args);
echo ")不存在!";
}
當調用一個不存在的方法時(如 test() 方法):
$p1=new Person();
$p1->test(2,"test");
輸出的結果如下:
你所調用的函數:test(參數:
array(2) {
[0]=>int(2)
[1]=>string(4) "test"
}
)不存在、
class Test1{
public function fun1(){
echo "fun1().........";
}
public function __call($name,$params)
{
echo "{$name}()....";
}
}
$t1 = new Test1();
$t1 -> fun1();
$t1 -> fun2();