博主信息
博文 20
粉丝 0
评论 0
访问量 19965
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php学习小结(类成员重载、全局成员、空间声明及成员访问)
庖丁
原创
978人浏览过

1. 描述类成员重载的原理与实现

访问类中的属性或者方法,如果不存在或者受保护,会自动执行一个魔术方法。进而在魔术方法里对该访问请求进行过滤或者动态创建类属性和方法。

  1. <?php
  2. //重载的魔术方法-属性重载 __get() __set() __isset() __unset()
  3. //重载的魔术方法-方法重载 普通方法__call() 静态方法__callStatic()
  4. class quanxian
  5. {
  6. private $manger = 'guanliyuan';
  7. public function __get($name){
  8. if ($name === $this->manger):
  9. return '可以继续浏览';
  10. else:
  11. //动态生成方法名字
  12. $method = 'get'.ucfirst($name);
  13. return $this -> $method();
  14. endif;
  15. }
  16. public function getUser(){
  17. return'无权访问';
  18. }
  19. }
  20. $user = new quanxian();
  21. echo $user->guanliyuan;
  22. echo $user->user;

2. 全局成员有哪几种,有什么特点

全局成员有三种:类、函数、常量,特点是不能重复声明。

  1. <?php
  2. //类
  3. class Demo{
  4. }
  5. //常量
  6. const APPNAME = '微信';
  7. //函数
  8. function addName(){
  9. return '名字';
  10. }

3. 空间的声明(关键字namespace)与空间成员的访问

  1. <?php
  2. namespace C {
  3. class Banji
  4. {
  5. //...
  6. }
  7. //echo 'C\Banji'
  8. echo Banji::class;
  9. //访问全局空间成员前面要加\
  10. echo \Quanju::class;
  11. }
  12. namespace D {
  13. class Banji
  14. {
  15. //...
  16. }
  17. //echo 'D\Banji'
  18. echo Banji::class;
  19. }
  20. //全局空间
  21. namespace{
  22. class Quanju{
  23. static $name = '全局';
  24. }
  25. //echo 'Quanju'
  26. echo Quanju::class;
  27. }

4. 空间成员的分解与合并操作

  1. //第一个文件,引用home1.php和home2.php
  2. namespace home;
  3. require 'home1.php';
  4. require 'home2.php';
  5. //第二个文件,home1.php
  6. namespace home;
  7. class Home1{
  8. //...
  9. }
  10. //第三个文件,home2.php
  11. namespace home;
  12. class Home2{
  13. //...
  14. }

5. 在子空间中访问任何空间中的成员的方式

  1. <?php
  2. namespace C {
  3. class Banji
  4. {
  5. //...
  6. }
  7. //访问子类成员及子子类
  8. echo C1\Banji::class,'<br>';
  9. echo C1\C2\Banji::class,'<br>';
  10. }
  11. namespace C\C1 {
  12. class Banji
  13. {
  14. //...
  15. }
  16. //访问子类成员
  17. echo C2\Banji::class,'<br>';
  18. //访问父类成员
  19. echo \C\Banji::class,'<br>';
  20. }
  21. namespace C\C1\C2 {
  22. class Banji
  23. {
  24. //...
  25. }
  26. //访问父类成员及父父类
  27. echo \C\Banji::class,'<br>';
  28. echo \C\C1\Banji::class,'<br>';
  29. }
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学