数组换位置一.介绍 PHP(外文名:PHP: Hyperte(26)
可见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
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-26.html
http://www.jiaoanw.com/
true
教案网
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-26.html
report
1786
可见static有3个不同含义的语法: 函数中的静态变量: function f1(){ static $v1 = 1;} 类中的静态成员: class A{ static $v1 = 1; static function f1(){}} 方法中的动态指代
这是一个好演员