一、类的组成部分:

1.类有关键字:class
2.类的名字:通常首字母大写
3.类的扩展关键字:extends
4.类的主体有大括号包括{}

二、类通常包含属性和方法

1.类的属性和方法的修饰符:

  • 访问修饰符:
    • public:公开的,谁都可以直接访问
    • private:私有的,仅类内的方法可以访问(字类无法直接访问)
    • protected:受保护的,仅类本身和子类可以直接访问
  • 静态修饰符
    • static:通常在属性名(方法函数function)之前,在访问修饰符之后(在方法中使用时,用于延时绑定)

三、类中查常见的关键字

  • $this:类的实列对象
  • self:类的本身
  • parent:通常指向父类
  • static:通常延时访问,当前运行方法的类
  • ::访问范围符,通常跟self|parent|static使用

四、类中常见的修饰符

1.final:在类名前声明final关键字,当前类则无法被继承,如果类中方法声明了关键字final关键字,当前方法则无法被子类修改
2.abstract:在类名前声明关键字abstract,当前类则为抽象类,抽象类必有抽象方法(抽象方法没有函数体);

五、Trait方法集

1.Trait方法集的组成:方法集属于伪类的一种,不能实列化

  • 关键字Trait+方法集名字建议由小写t开头首字母大写例如tUser
  • 方法集主体,由大括号包括,里面由属性和方法组成
  • 在类中通过关键字use关键字来使用,可以多个方法集组合使用,用逗号分开:其中方法集和父类以及字类的优先级:子类>方法集>父类;
  • 如果方法集中的方法与类中或者其他方法集的命名冲突时,可以通过insteadof(指定使用哪个方法集中的方法替代重名的方法)和as(重名的方法可以起别名,使用)来进行解决类如:
  1. use tT1,tT2{
  2. tT1::show insteadof tT2;
  3. tT2::show as sh;
  4. }

六、实战练习

1代码

  1. <?php
  2. include "autoload.php";
  3. echo "测试OK";
  4. class UseName
  5. {
  6. public $name="ldy";
  7. private $age=35;
  8. protected $sex="男";
  9. private static $id=1;
  10. public function __construct(){
  11. }
  12. public function show():string
  13. {
  14. return $this->name.__FUNCTION__.__METHOD__.__CLASS__;
  15. }
  16. // self的作用
  17. public function string():string
  18. {
  19. return self::$id.$this->name;
  20. }
  21. //static延迟绑定
  22. public function tostring():string
  23. {
  24. return static::$id;
  25. }
  26. }
  27. Trait tT1
  28. {
  29. function show():string
  30. {
  31. return __METHOD__;
  32. }
  33. function put():string
  34. {
  35. return __METHOD__;
  36. }
  37. }
  38. Trait tT2
  39. {
  40. function show():string
  41. {
  42. return __METHOD__;
  43. }
  44. }
  45. class Demo extends UseName
  46. {
  47. use tT1,tT2{
  48. tT1::show insteadOf tT2;
  49. tT2::show as sh;
  50. }
  51. public static $id=2;
  52. }
  53. $usr=new UseName();
  54. $user=new Demo();
  55. echo $usr->show();
  56. echo $usr->string();
  57. echo $usr->tostring();
  58. echo "<hr>";
  59. echo $user->string();
  60. echo $user->tostring();
  61. echo $user->show();
  62. echo "<hr>";
  63. echo "<h3>方法集中方法名冲突</h3><br>";
  64. echo $user->show()."<br>";
  65. echo $user->sh()."<br>";
  66. echo "<hr>";
  67. echo "__FILE__的返回内容:".__FILE__."<br>";//返回当前文件的具体路径位置(包含文件名字)
  68. echo "__DIR__的返回内容:".__DIR__."<br>";//返回当文件的的文件路径(不包含文件名)
  69. echo "__NAMESPACE__的返回内容:".__NAMESPACE__."<br>";
  70. echo "dirname()的返回内容:".dirname(__FILE__);//函数返回路径中的目录名称部分。作用等同于__DIR__;
  71. echo "<hr>";
  72. $user_one=new Login();
  73. echo $user_one->input();

2.运行结果

更多相关文章

  1. PHP基础: 类(class)的声明,实例化,静态成员和类的扩展﹑trait的功
  2. PHP基础: 接口与抽象类
  3. 一文读懂 JAVA 异常处理
  4. 几种Linux系统切换内核启动顺序方法
  5. Java反射机制:跟着代码学反射
  6. linux下挂载NTFS文件系统出现symbol lookup error: 报错解决方
  7. shell单分支if条件句语法详解与生产案例详解
  8. Java 对象的哈希值是每次 hashCode() 方法调用重计算么?
  9. 这样规范写代码,同事直呼“666”

随机推荐

  1. 浏览器Bug在输入上显示时间文本
  2. 在执行ajax时显示加载图像
  3. 使用jQuery的dataTable插件和嵌套的Ajax
  4. 在使用javascript将信息输入到输入字段时
  5. JQuery Mobile 手机显示页面偏小
  6. 具有嵌套效果循环的jquery动画
  7. JQuery属性与样式――.val()和增加样式.a
  8. 点击JSON数据加载Galleria画廊。我需要新
  9. 如何在进度条全屏表单界面上添加百分比状
  10. 基于jQuery的软键盘