Blogger Information
Blog 43
fans 0
comment 3
visits 26806
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php:1. 实例演示属性与方法重载 2. 实例演示命名空间与类自动加载器
Time
Original
463 people have browsed it

1.实例演示属性与方法重载

  1. <?php
  2. /**
  3. * 1.属性重载:__get(),__set();
  4. * 2.方法重载:__call(),__callStatic();
  5. */
  6. class User{
  7. private $data = [
  8. 'name' => '张老师',
  9. 'age' =>null,
  10. ];
  11. //查询拦截器
  12. public function __get($name){
  13. if(array_key_exists($name,$this->data)){
  14. return $this->data[$name];
  15. }
  16. return "属性{$name}不存在";
  17. }
  18. //更新拦截器
  19. public function __set($name,$value){
  20. //是否有键值
  21. if(array_key_exists($name,$this->data)){
  22. //是否合法
  23. if($name === 'age'){
  24. if($value>=18 && $value<=59){
  25. return $this->data[$name] = $value;
  26. }else{
  27. echo '年龄必须在18-59之间';
  28. }
  29. }else{
  30. return $this->data[$name] = $value;
  31. }
  32. }else{
  33. echo '禁止动态创建属性';
  34. }
  35. }
  36. //方法拦截器
  37. public function __call($name,$args){
  38. printf('方法:%s<br><pre> 参数:%s</pre>',$name,print_r($args,true));
  39. }
  40. //方静态法拦截器
  41. public static function __callStatic($name,$args){
  42. printf('方法:%s<br><pre> 参数:%s</pre>',$name,print_r($args,true));
  43. }
  44. }
  45. $user = new User;
  46. echo $user->name.'<br>';
  47. $user->age = 30;
  48. echo $user->age.'<br>';
  49. echo '<hr color=red>';
  50. $user->hello('name','张老师');
  51. User::word(1000,20000);

2. 实例演示命名空间与类自动加载器

命名空间:

  1. <?php
  2. /**
  3. * 命名空间使用namespace关键字声明,必须写到第一行
  4. * 一个脚本可以创建多个命名空间
  5. *
  6. */
  7. namespace ns1{
  8. //空间成员
  9. const APP = '商城';
  10. }
  11. //空间分级管理:子空间
  12. namespace ns2\ns3{
  13. const APP = '问答';
  14. echo APP . '<br>';
  15. }
  16. namespace ns2{
  17. //空间成员
  18. const APP = '社区';
  19. class Demo{}
  20. function index(){}
  21. //非限定名称:从当前空间查询
  22. echo APP . '<br>';
  23. //完全限定名称:从根空间开始查询
  24. echo \ns1\APP . '<br>';
  25. //限定名称:子空间 ns3\APP;
  26. echo ns3\APP;
  27. }

类自动加载器类自动加载器:

  1. <?php
  2. namespace ns1;
  3. //注册一个类的自动加载器
  4. /**
  5. * 1.一个文件一个命名空间一个类
  6. * 2.命名空间的名与成员路径一致
  7. * 3.类名与文件名一致
  8. */
  9. spl_autoload_register(function($class){
  10. $path = str_replace('\\',DIRECTORY_SEPARATOR,$class);
  11. echo $path;
  12. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  13. require $file;
  14. });
  15. new \php\Demo;
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