您现在的位置:首页 > 教案格式 > 正文

数组换位置一.介绍 PHP(外文名:PHP: Hyperte(26)

2018-02-02 05:05 网络整理 教案网

可见static有3个不同含义的语法:

函数中的静态变量:

function f1(){
    static $v1 = 1;
}

类中的静态成员:

class A{
    static $v1 = 1;
    static function f1(){}
}

方法中的动态指代“当前类”:

class A{
    function f1(){
        static::f2();//static此时指代调用f1这个方法的类(或对象的类)
        self::f2(); //self这里永远指代当前A这个类。
    }
}

设计模式就是一些解决问题的“常规做法”,是一种认为较好的经验总结。面对不同的问题,可能会有不同的解决办法,此时就可以称为不同的设计模式。

在实际应用中,遇到需要去实例化很多很多的类以得到对象的情况,可以设计出一个工厂(类),该工厂(类)的作用就是实例化各种对象。这种工厂通常只要指定类名,就可以据此获取一个该类的对象。

<?php
class factory{
  static function testFile(){
    mkdir("C:/Users/Administrator/class");
    $file = fopen("C:/Users/Administrator/class/A.class.php", ‘w‘);
    fwrite($file, "<?php\n");
    fwrite($file, "class A{}");
    fclose($file);
  }
  static function getInstance($className){
    if(file_exists("C:/Users/Administrator/class/{$className}.class.php")){
      require_once "C:/Users/Administrator/class/{$className}.class.php";
      return $obj1 = new $className();
    }else{
      return null;
    }
  }
}
factory::testFile();
$o1 = factory::getInstance("A");
var_dump($o1);

在实际应用中,对于某些类在使用它的时候,从程序运行的开始到结束都只需要一个对象就可以完成所有任务。就可以使用单例。数组换位置

单例:某个类,只允许其创建出一个对象,即使去进行多次创建,也只能得到一个对象。

<?php
class DB{
  public $db = ‘mysql‘;
  
  private static $instance;
  //禁止通过构造方法创建对象(new对象)
  private function __construct(){}
  //禁止通过克隆对象(克隆产生的对象也是新对象)
  private function __clone(){}
  
  public static function getNew(){
    if( !isset(DB::$instance)){
      DB::$instance = new self;
    }
    return DB::$instance;
  }
}
$db1 = DB::getNew();
$db1->db = ‘mysql1‘;
$db2 = DB::getNew();
echo $db2->db;//mysql1