面向對象

面向對象

常量

可以把在類中始終保持不變的值定義爲常量。在定義和使用常量的時候不需要使用 $ 符號。
常量的值必須是一個定值,不能是變量,類屬性,數學運算的結果或函數調用。
自 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();
發佈了23 篇原創文章 · 獲贊 28 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章