2020年5月15日

    1. <?php
    2. class A{
    3. const NAME = '黑子';
    4. public function getNAME(){
    5. return '类的内部:' . self::NAME;
    6. }
    7. }
    8. //在类外部获取属性
    9. //类名::常量名
    10. //::静态访问符
    11. var_dump(A::NAME);
    12. //在类内部获取属性
    13. //self和$this一样的意思,都是表达当前类;self表示静态 $this表示动态
    14. //self可以去获取变量和常量;$this只能去获取变量
    15. //self::常量名
    16. $obj = new A ();
    17. var_dump($obj->getNAME());
    18. function _autoload($classNAME){
    19. var_dump($classNAME);
    20. $rootPath = './org/';
    21. $fullFileNAME = $clasNAME . 'class.php';
    22. $fullPath =$rootPath . $fullFileNAME;
    23. if(file_exists($fullPath)){
    24. include_once $fullPath;
    25. }
    26. }
    27. $obj = new A();
    28. var_dump($obj);
    29. spl_autoload_register(function($className){
    30. $rootPath='./org/';
    31. $fullFileName=$NAME . '.class.php';
    32. $fullPath=$rootPath.$fullFileName;
    33. if(file_exists($fullPath)){
    34. include_once $fullPath;
    35. }
    36. });
    37. function putong($NAME){
    38. $rootPath='./org1/';
    39. $fullFileName=$NAME . '.class.php';
    40. $fullPath = $rootPath.$fullFileName;
    41. if(file_exists($fullPath)){
    42. if(file_exists($$fullPath)){
    43. include_once $fullPath;
    44. }
    45. }
    46. }
    47. spl_autoload_register('sdsdss');
    48. new A();
    49. new B();
    50. <?php
    51. class A{
    52. const NAME = '黑子';
    53. public function getNAME(){
    54. return '类的内部:' . self::NAME;
    55. }
    56. }
    57. //在类外部获取属性
    58. //类名::常量名
    59. //::静态访问符
    60. var_dump(A::NAME);
    61. //在类内部获取属性
    62. //self和$this一样的意思,都是表达当前类;self表示静态 $this表示动态
    63. //self可以去获取变量和常量;$this只能去获取变量
    64. //self::常量名
    65. $obj = new A ();
    66. var_dump($obj->getNAME());
    67. function _autoload($classNAME){
    68. var_dump($classNAME);
    69. $rootPath = './org/';
    70. $fullFileNAME = $clasNAME . 'class.php';
    71. $fullPath =$rootPath . $fullFileNAME;
    72. if(file_exists($fullPath)){
    73. include_once $fullPath;
    74. }
    75. }
    76. $obj = new A();
    77. var_dump($obj);
    78. spl_autoload_register(function($className){
    79. $rootPath='./org/';
    80. $fullFileName=$NAME . '.class.php';
    81. $fullPath=$rootPath.$fullFileName;
    82. if(file_exists($fullPath)){
    83. include_once $fullPath;
    84. }
    85. });
    86. function putong($NAME){
    87. $rootPath='./org1/';
    88. $fullFileName=$NAME . '.class.php';
    89. $fullPath = $rootPath.$fullFileName;
    90. if(file_exists($fullPath)){
    91. if(file_exists($$fullPath)){
    92. include_once $fullPath;
    93. }
    94. }
    95. }
    96. spl_autoload_register('sdsdss');
    97. new A();
    98. new B();
    99. <?php
    100. class A{
    101. const NAME = '黑子';
    102. public function getNAME(){
    103. return '类的内部:' . self::NAME;
    104. }
    105. }
    106. //在类外部获取属性
    107. //类名::常量名
    108. //::静态访问符
    109. var_dump(A::NAME);
    110. //在类内部获取属性
    111. //self和$this一样的意思,都是表达当前类;self表示静态 $this表示动态
    112. //self可以去获取变量和常量;$this只能去获取变量
    113. //self::常量名
    114. $obj = new A ();
    115. var_dump($obj->getNAME());
    116. function _autoload($classNAME){
    117. var_dump($classNAME);
    118. $rootPath = './org/';
    119. $fullFileNAME = $clasNAME . 'class.php';
    120. $fullPath =$rootPath . $fullFileNAME;
    121. if(file_exists($fullPath)){
    122. include_once $fullPath;
    123. }
    124. }
    125. $obj = new A();
    126. var_dump($obj);
    127. spl_autoload_register(function($className){
    128. $rootPath='./org/';
    129. $fullFileName=$NAME . '.class.php';
    130. $fullPath=$rootPath.$fullFileName;
    131. if(file_exists($fullPath)){
    132. include_once $fullPath;
    133. }
    134. });
    135. function putong($NAME){
    136. $rootPath='./org1/';
    137. $fullFileName=$NAME . '.class.php';
    138. $fullPath = $rootPath.$fullFileName;
    139. if(file_exists($fullPath)){
    140. if(file_exists($$fullPath)){
    141. include_once $fullPath;
    142. }
    143. }
    144. }
    145. spl_autoload_register('sdsdss');
    146. new A();
    147. new B();

    类常量:
    类常量使用const来定义
    获取常量使用 类名 或 self
    const 名字 = 值

    __autoload(); 尝试加载未定义的类;只能定义一次
    sql 是通过注册给定的函数 ;可以定义多条

    类的自动加载
    spl_autoload_register()
    spl_autoload_register()实现的功能与_autoload 一致的
    spl_autoload_register()这个的功能比_autoload 多一些;
    多出的功能:
    通过sql函数有多个自动加载类的函数(加载多个文件夹类)
    通过列表的形式保存多个加载类的函数

    spl_autoload_register
    注册给定的函数作为 __autoload的实现
    将函数注册到sql_autoload函数队列中,如果该队列中的函数未激活,则激活它
    如果需要多条autoload函数,sql_autoload_register()满足了此类需求
    按定义时的额顺序逐个执行

    类的自动加载
    为什么需要这个功能:
    类=功能;由于有多个功能,如果写在一个文件中就不能方便的去写项目
    mysql =>file
    upload => file
    page => file
    自动加载规则:
    前提:当new一个不存在(未定义)当前文件的类时,系统会将类名传递给类自动加载函数;
    1.所有的类必须放在一个文件夹内
    2.文件名字必须和类名一致(区分大小写)
    3.文件的后缀必须为 .class.php栗子:类名.class.php

    _autoload 自动加载函数
    名字是固定,只有写一个自定义函数名字为_autoload 那他就是自动加载函数

    spl_autoload_register 将一个函数注册成为自动加载类函数