zoukankan      html  css  js  c++  java
  • PHP之overload

     1 <?php
     2     /*
     3 
     4         魔术方法的作用:
     5             当访问了 私有的或者不存在的属性时候,会自动调用这些魔术方法
     6             __set() , __get() , __isset() , __unset()
     7 
     8     */
     9     class Test{
    10         private $_name;
    11         private $_gender;
    12 
    13         public function set_name($g){
    14             if (in_array($g, array('nan','nv','bm'))) {
    15                 //做自己的业务逻辑处理
    16             }
    17         }
    18 
    19         public function set_name($n){
    20             //做自己的业务逻辑
    21         }
    22         public function __construct($_name, $_gender){
    23             $this->$_name= $_name;
    24             $this->$_gender=$_gender;
    25         }
    26 
    27         public function __set($p, $v){
    28             if(substr($p, 0,1) == "_"){  //判断重载一个 可能不存在 或者是私有的属性
    29                 $p= '_'.$p;
    30             }
    31             if (true==property_exists($this, $p)) {   //判断 当前类new出的对象 是否有这个形参属性 $p
    32                 $method_name='set'.$p;
    33             
    34             $this->$method_name($v);    //$method_name  是可变的方法 因此是用 $this->$method_name
    35             }else{
    36                 trigger_error("您所访问的属性或者方法是私有的或者是不存在的");
    37             }
    38         }
    39 
    40         public function __get(){
    41 
    42         }
    43 
    44         public function __isset($pram){
    45             //当用户调用了 isset() 方法的时候  传递进来的形参 做一系列的自己的业务逻辑处理
    46         }
    47 
    48         public function __unset(){
    49 
    50         }
    51     }        
    52 
    53     class Factory{
    54 
    55         //声明静态直接由类调用该产生对象的方法
    56         public static function getInstance($class_name){
    57             static $instance_list = array();
    58 
    59             //首先判断这个类是否已经存在类数组列表中
    60             if (!isset($instance_list[$class_name])) {
    61                 $instance_list[$class_name] = new $class_name ; //可变类  ,new出一个可变类 
    62             }
    63 
    64             return $instance_list[$class_name];
    65         } 
    66     }
    67 
    68 
    69     $test = Factory::getInstance('Test');
    70     // var_dump($test);
    71     $test->_name = 'xujin';
  • 相关阅读:
    CentOS7 使用定时任务
    springboot整合mybatis+mysql+druid数据源
    js 防抖和节流,封装成函数
    vue 单页面项目卸载依赖和插件的方式
    Tomcat部署vue单页面项目
    linux DRM/KMS 测试工具 modetest、kmscude、igt-gpu-tools (二)
    linux DRM/KMS 测试工具 modetest、kmscude、igt-gpu-tools (一)
    软构设计模式简单归纳
    软件构造复习中关于不变性的一个疑问以及代码验证
    代码快照图与可变不可变
  • 原文地址:https://www.cnblogs.com/sharecorner/p/6129300.html
Copyright © 2011-2022 走看看