面向对象

面向对象

常量

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
自 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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章