批改状态:合格
老师批语:
class Teacher{// 类常量public const CATES = ['前端','后端','全栈'];// 静态属性和类常量,属于类本身,不需要实例化就可以访问public static string $uname;private static int $salary;public static string $siteName= '中文网';static int $count = 0;public function __construct($uname,$salary){self::$salary=$salary;self::$uname=$uname;self::$count++;}static function getName(){return self::$uname.'是老师。';}}$user = new Teacher('mj', 2000);echo Teacher::$uname;//带$print_r(Teacher::CATES);//不带$echo Teacher::getName();echo Teacher::$count;
interface Demo{//所有成员必须公开public const CITY = 'JinHua';// 所有方法都是抽象方法,只声明不实现public function sum($arr);public function sub($a, $b);public function mul($arr);public function div($a,$b);}interface test {public const T =100;}abstract class Demo1 implements Demo, test{//未实现全部方法则用抽象类,抽象类中可包含抽象方法和实例方法,不能被实例化//抽象类可以对应多个接口,用“,”隔开//同名方法优先级 类同名方法>trait>继承成员方法public function sum($arr){return array_sum($arr);}public function sub($a, $b){}public function mul($arr){}public function div($a,$b){}}class Work extends Demo1{use t1, t2;public function sum($arr){return array_sum($arr)+100;}public function sub($a, $b){return $a - $b;}}$obj = new Work;echo $obj->sum([2, 34, 5]);$obj->dd('hello');
trait 功能组合实现多继承,给予类的语法,对类功能扩展,不能实例化
trait t1{public function dd($data){var_dump($data);die;}}
class Car{private static function getName(){return 'car';}public static function run(){//self取决于定义类,不能动态绑定;如需动态绑定改用static,static被绑定调用的类,用于静态继承// return self::getName();return static::getName();}}class Benz extends Car{public static function getName(){return 'E300';}}echo Car::run();echo Benz::run();// $my = new Benz;// echo $my::run();
用final标识类在子类中不能被修改,self与static效果同
4.命名空间及USE的使用
全局成员有常量 命名函数 类(接口),会有命名冲突的问题
namespace name1;class test{public static function show(){return __METHOD__;}}namespace name2;class test{public static function show(){return __METHOD__;}}echo test::show();//访问其他命名空间需加空间名,‘\’返回到根空间echo \name1\test::show();echo call_user_func(['name2\test', 'show']);//命名空间的函数>系统函数的同名函数
在框架入口文件中,可用as给use的文件夹起别名,不起别名默认最后一段
const DS= DIRECTORYSEPARATOR;
require _DIR.DS.’autoload.php’;
use app\controller as ac;use app\controller;echo ac\Index::index();echo controller\Login::index();
在自动加载时,要注意文件目录的设置,
spl_autoload_register(function($className){// echo $className.'<hr>';$file = __DIR__.DS.'class'.DS.$className.'.php';$file = str_replace("\\",DIRECTORY_SEPARATOR,$className).'.php';if(is_file($file)&&file_exists($file)) require $file;// echo $file.'<hr>';// echo __DIR__;});
这段老师讲的比较乱,还是去自学消化吧!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号