批改状态:合格
老师批语:
class 类名 {// 类成员public $name; // 公有成员,可以在类的外部,内部使用private $num = 0; // 私有成员,只能在类内部使用protected $price = 1000; // 保护成员,只能在类内,子类使用// 公有方法public function getName () {echo $this -> name;}// 获取器:__get 魔术方法public function __get ($name) {return $this->$name;}// __set和__get魔术方法在对象访问私有属性时自动触发// 设置器 __set(变量,值)public function __set ($name,$value) {$this->$name = $value;}// 静态属性 只能通过类访问对象实例化时自动触发static $classname;// 静态方法public static function getClassName () {echo 类名魔术常量;}}
abstract class Demo1 {protected $name = 'administrator';static $classname = 'Demo';// abstract 抽象声明,结尾必须分号;// 必须在子类中重写实现抽象方法abstract public static function show($na);}class Demo2 extends Demo1 {public static function show($na) {return $na;}}
// interface接口类 :升级版的抽象类interface Demo {// 常量public const NAME = 'demo';// 方法publicpublic function show();public function get();}// 工作类class Demo1 implements Demo {// 接口父类中的抽象方法,必须在子类中全部实现public function show() {// .....}public function get() {// .....}}// 如果子类中只实现了一部分方法,应该声明为抽象类abstract class Demo2 implements Demo {public function show() {// .....}}// php是单继承interface A {// .....}interface B {// .....}interface C {// .....}// 可以从多个接口类获取成员,实现多继承class D implements A,B,C {// .....}
全局成员:函数,常量,类和接口全局有效,不能重复声明
命名空间解决了命名冲突
namespace one;function demo() {return '123';}echo demo() . '<br>'; // 当前路径:非限定名称demo()echo two\demo() . '<br>'; // 相对路径:限定名称two\demo()echo \one\two\three\demo() . '<br>'; // 绝对路径:完全限定名称\one\two\three\demo();// 空间分层namespace one\two;function demo() {return '321';}// 空间分层namespace one\two\three;function demo() {return '7654321';}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号