Blogger Information
Blog 29
fans 1
comment 0
visits 14952
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP类的声明和命名空间
Pharaoh
Original
424 people have browsed it

类的声明

  • 抽象类声明 abstract class Name ; 继承 extends 关键字
  • 接口类声明 interface Name ; 继承 implements 关键字
  • 最终类声明 final class Name ; 不能继承
  1. class 类名 {
  2. // 类成员
  3. public $name; // 公有成员,可以在类的外部,内部使用
  4. private $num = 0; // 私有成员,只能在类内部使用
  5. protected $price = 1000; // 保护成员,只能在类内,子类使用
  6. // 公有方法
  7. public function getName () {
  8. echo $this -> name;
  9. }
  10. // 获取器:__get 魔术方法
  11. public function __get ($name) {
  12. return $this->$name;
  13. }
  14. // __set和__get魔术方法在对象访问私有属性时自动触发
  15. // 设置器 __set(变量,值)
  16. public function __set ($name,$value) {
  17. $this->$name = $value;
  18. }
  19. // 静态属性 只能通过类访问对象实例化时自动触发
  20. static $classname;
  21. // 静态方法
  22. public static function getClassName () {
  23. echo 类名魔术常量;
  24. }
  25. }

抽象类

  1. abstract class Demo1 {
  2. protected $name = 'administrator';
  3. static $classname = 'Demo';
  4. // abstract 抽象声明,结尾必须分号;
  5. // 必须在子类中重写实现抽象方法
  6. abstract public static function show($na);
  7. }
  8. class Demo2 extends Demo1 {
  9. public static function show($na) {
  10. return $na;
  11. }
  12. }

接口类

  1. // interface接口类 :升级版的抽象类
  2. interface Demo {
  3. // 常量
  4. public const NAME = 'demo';
  5. // 方法public
  6. public function show();
  7. public function get();
  8. }
  9. // 工作类
  10. class Demo1 implements Demo {
  11. // 接口父类中的抽象方法,必须在子类中全部实现
  12. public function show() {
  13. // .....
  14. }
  15. public function get() {
  16. // .....
  17. }
  18. }
  19. // 如果子类中只实现了一部分方法,应该声明为抽象类
  20. abstract class Demo2 implements Demo {
  21. public function show() {
  22. // .....
  23. }
  24. }
  25. // php是单继承
  26. interface A {
  27. // .....
  28. }
  29. interface B {
  30. // .....
  31. }
  32. interface C {
  33. // .....
  34. }
  35. // 可以从多个接口类获取成员,实现多继承
  36. class D implements A,B,C {
  37. // .....
  38. }

命名空间

全局成员:函数,常量,类和接口全局有效,不能重复声明

命名空间解决了命名冲突

  1. namespace one;
  2. function demo() {
  3. return '123';
  4. }
  5. echo demo() . '<br>'; // 当前路径:非限定名称demo()
  6. echo two\demo() . '<br>'; // 相对路径:限定名称two\demo()
  7. echo \one\two\three\demo() . '<br>'; // 绝对路径:完全限定名称\one\two\three\demo();
  8. // 空间分层
  9. namespace one\two;
  10. function demo() {
  11. return '321';
  12. }
  13. // 空间分层
  14. namespace one\two\three;
  15. function demo() {
  16. return '7654321';
  17. }
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post