PHP最常用的2种设计模式:工厂模式和单例模式_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:PHP中++i 与 i++ 的区别
1、++i 的用法(以 a=++i ,i=2 为例) 先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ), 则最终 a 值等于 3 , i 值等于 3 。 所以 a=++i 相当于 i=i+1 ,a=i 2、i++ 的用法(以 a=i++ ,i=2 为例) 先将 i 值赋给变量 a (也就是 a=i ),然后 i 值加 1 (也就

1.工厂模式

主要作用是降低耦合度。

  1. abstract class Operation{ 
  2.     abstract public  function getValue($num1,$num2); 
  3.     public  function getAttr(){ 
  4.         return 1; 
  5.     } 
  6. class Add extends Operation{ 
  7.     public function getValue($num1$num2){         
  8.         return $num1+$num2
  9.     } 
  10.  
  11. class Sub extends Operation{ 
  12.     public function getValue($num1$num2){ 
  13.         return $num1-$num2
  14.     } 
  15.  
  16. class Factory{ 
  17.     public static function CreateObj($operation){ 
  18.          
  19.         switch ($operation){ 
  20.             case '+'return new Add(); 
  21.             case '-'return new Sub(); 
  22.         } 
  23.          
  24.     } 
  25.  
  26. $Op=Factory::CreateObj('-'); 
  27. echo $Op->getValue(3, 6); 
用在真正开发中一般当做数据库选择类。
2单例模式
单例是因为一个就足够了,多了浪费。比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。
  1. class Mysql{ 
  2.     public static $conn
  3.     public static function getInstance(){ 
  4.         if (!self::$conn){ 
  5.             new self(); 
  6.             return self::$conn
  7.         }else { 
  8.             return self::$conn
  9.         } 
  10.          
  11.     } 
  12.     private  function __construct(){     
  13.         self::$conn=  "mysql_connect:";//    mysql_connect('','','')     
  14.     } 
  15.      
  16.     public function __clone() 
  17.     { 
  18.         trigger_error("Only one connection"); 
  19.     } 
  20.  
  21.  echo Mysql::getInstance(); 
  22.  echo Mysql::getInstance(); 
实际中用作数据库连接类和工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。

分享:php中判断文件空目录是否有读写权限
Example #1 is_writable() 例子 代码如下 复制代码 $filename = 'test.txt'; if (is_writable($filename)) { echo 'The file is writable'; } else { echo 'The file is not writable'; } ? 上面的函数有一个问题就是filename 必需。规定要检查的文件 ,必须是文件啊,

来源:cnblogs//所属分类:PHP教程/更新时间:2012-08-12
相关PHP教程