批改状态:合格
老师批语:
class User{static $min = 10;private $data = ['age' => 18,];function __get($name){return array_key_exists($name,$this->data) ? $this->data[$name] : $name . '不存在';}function __set($name,$value){if(!array_key_exists($name,$this->data)){$this->data[$name] = $value;}else{return $name . '名字已经存在';}}function __call($name,$arge){printf('%s,%s',$name,$arge);}static function __callStatic($name, $arguments){// TODO: Implement __callStatic() method.echo $name;}}$user = new User();echo $user->name;$user->hellow(200);$user::word(100);echo User::$min;
class query{function table($table){return $this;}function where($table){return $this;}function find(){}}class Db{static function __callStatic($name,$argement){return call_user_func_array([new Query(),$name],$argement);}}Db::table('think_user')->where('id', 1)->find();
call_user_func_array():
1)普通使用:
function a($b, $c) {echo $b;echo $c;}call_user_func_array('a', array("111", "222"));//输出 111 222
2)调用类内部的方法:
Class ClassA {function bc($b, $c) {$bc = $b + $c;echo $bc;}}call_user_func_array(array('ClassA','bc'), array("111", "222"));//输出 333
<?php//接口:抽象类和接口类似//接口类interface iUser{//类成员必须共有属性function fun1();function fun2();}//工作类class Demo01 implements iUser{function fun1(){}function fun2(){}}//PHP是单继承
<?php//接口:抽象类和接口类似//接口类interface iUser1{//类成员必须共有属性function fun1();function fun2();}interface iUser2{//类成员必须共有属性function fun3();function fun4();}//工作类class Demo01 implements iUser1,iUser2{function fun1(){echo __METHOD__;}function fun2(){echo __METHOD__;}function fun3(){// TODO: Implement fun3() method.echo __METHOD__;}function fun4(){// TODO: Implement fun4() method.echo __METHOD__;}}//PHP是单继承$user = new Demo01();$user->fun1();$user->fun3();
在PHP中函数、类、常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间,在不同的命名空间中可以出现同名现象
完全限定
<?php/*** 命名空间**/namespace one;class A{//静态方法中不能引用非静态变量!//静态变量只能够类来引用static $name = 'yk';static function fun1(){return A::$name ;}}echo A::class; //非限定访问namespace two;class A{static function fun1(){}}echo A::class;echo \one\A::$name; //完全限定three\A::fun1(); //限定访问namespace two\three;class A{static function fun1(){echo __METHOD__;}}
<?php/*** 1.路径* 2.命名冲突问题* use默认使用完全限定名称/绝对路径* 3.*/namespace one;class A{static $name = 'yk';public static function fun1(){return A::$name;}}use \one\two\A as B;B::fun1();namespace one\two;class A{static $name = 'yk';public static function fun1(){echo __METHOD__ . PHP_EOL;return A::$name;}}A::fun1();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号