当前位置:  编程技术>php
本页文章导读:
    ▪php设计模式之单例模式      单例模式:简单的说,一个对象只负责一个特定的任务。单例类:    1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化    2.拥有一个保存类的.........
    ▪wordpress 数据库和文件-备份-搬家-恢复插件-Wordpress Move      前几天要帮人测试一个wp的网站,对方要求先在a主机折腾,完了上b主机运行。wordpress的各种插件,模板参数设置,也是费时间的。由于不能用phpmyadmin ,所以就查找一下 wordpress 的官方网,想.........
    ▪php设计模式之工厂模式      工厂模式:由工厂类根据参数来决定创建出哪一种产片类的实例工厂类:一个专门用来创建其他对象的方法类。即按需分配,传入参数进行选择,返回具体的类作用:对象创建的封装、简化创建.........

[1]php设计模式之单例模式
    来源:    发布时间: 2013-11-07

单例模式:简单的说,一个对象只负责一个特定的任务。


单例类:

    1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化

    2.拥有一个保存类的实例静态成员变量

    3.拥有一个访问这个实例的公共的静态方法。[常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到此类是否已经被实例化]

    注:需要创建__clone()方法防治对象被复制

作用:

    1.php的应用主要用于数据库,所以一个应用中会存在大量的数据库操作,使用单例模式,则可以避免大量new操作消耗的资源

    2.如果系统中需要一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现。参照ZF的FrontController部分

    3.在一个页面请求汇总,便于进行调试,因为所有的代码都集中在一个类中,我们可以在类中设置钩子,输出日志,从而避免到处var_dump,echo。



<?php
class DanLi{
//静态成员变量
private static $_instance;
//私有的构造方法
private function __construct(){
}
//防止对象被克隆
public function __clone(){
trigger_error('Clone is not allow!',E_USER_ERROR);
}
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
}
public function test(){
echo "ok";
}
}

//错误:$danli = new DanLi(); $danli_clone = clone $danli;
//正确:$danli = DanLi::getInstance(); $danli->test();

?>


 


本文链接


    
[2]wordpress 数据库和文件-备份-搬家-恢复插件-Wordpress Move
    来源:    发布时间: 2013-11-07

前几天要帮人测试一个wp的网站,对方要求先在a主机折腾,完了上b主机运行。wordpress的各种插件,模板参数设置,也是费时间的。由于不能用phpmyadmin ,所以就查找一下 wordpress 的官方网,想弄个帝国备份之类的插件。

一开始是准备用backwpup,这个也是个非常出名的wp自动备份插件,可以说是好评如潮。

找了个国外的是视频教程,里面演练了一番插件的使用。本以为一切妥当。

临到要用了才发现找不到tools选项。数据恢复这个功能在免费版被淹割了。中指都懒得束了。

  又试了几个,费了半天劲终于找到一个符合要求的插件。wordpress搬家成功,支持一键换域名,ftp数据传送。几分钟就搞定。当然,我试的时候费了不少时间,搞残了一个站,因为换域名弄错了。OK,前面罗嗦了。

进入正题:Wordpress 搬家插件-换空间换域名之一键搞定:Wordpress Move,图文教程/

先下载插件,http://wordpress.org/extend/plugins/wordpress-move/

 

上传,启动就免谈了。一般是新旧两个站都要装一下这个插件。

///////////////////////////////////////////////////////////////////////////////////////////////////////

1,先在旧站备份一下,不备份就不能传,(废话了)

备份数据库,备份文件加数据库都可以。

2,备份完了要设置一下ftp先,否则等转移的时候在设置会很卡的。

 

这里有个要点,就是remote backup path 这个路径必须保证文件传到新网站的插件目录下,传到别的位置,新网站的插件会找不到备份数据,无法恢复。

 

3,转文件

 

选migrate 项目的begin。

4.

 

 

5,恢复数据。点击3图中的 restore项目就可以啦。

 

只要设置正确,10分钟就可以搞定啦。

本文链接


    
[3]php设计模式之工厂模式
    来源:    发布时间: 2013-11-07
工厂模式:由工厂类根据参数来决定创建出哪一种产片类的实例

工厂类:一个专门用来创建其他对象的方法类。即按需分配,传入参数进行选择,返回具体的类

作用:对象创建的封装、简化创建对象的操作,即调用工厂类的一个方法来得到需要的类

补充:

1.主要角色:抽象产品(Product)、具体产品(Concrete Product)、抽象工厂角色(Creator)

2.优缺点

    优点:工厂方法模式可以允许系统在不修改工厂角色的情况下引进心产品

    缺点:客户可能仅仅为了创建一个特定的Concrete Product对象,就不得不创建一个Creator子类

3.适用性

    当一个类不知道它所必须创建的对象的时候

    当一个类希望由它的子类来制定它所创建的对象的时候

    当一个类将创建对象的职责委托给多个帮助子类的某一个,并且希望你将哪一个帮助子类是代理这一信息局部化的时候

 



<?php
//对象
class MyObject{
public function __construct(){}
public function test(){
return 'test';
}
}
//工厂
class MyFactory{
public static function factory(){
return new MyObject();
}
}

$myObject = MyFactory::factory();
echo $myObject->test();
?>


 



<?php
//抽象类 定义属性及抽象方法
abstract class Operation{
protected $_NumberA = 0;
protected $_NumberB = 0;
protected $_Result= 0;

public function __construct($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}

public function setNumber($A,$B){
$this->_NumberA = $A;
$this->_NumberB = $B;
}

public function clearResult(){
$this->_Result = 0;
}

abstract protected function getResult();
}

//操作类
class OperationAdd extends Operation{
public function getResult(){
$this->_Result = $this->_NumbserA + $this->_NumberB;
return $this->_Result;
}
}

class OperationSub extends Operation{
public function getResult(){
$this->_Result = $this->_NumberA - $this->_NumberB;
return $this->_Result;
}
}
…………

//工厂类
class OperationFactory{
private static $obj;

public static function CreationOperation($type,$A,$B){
switch($type){
case '+':
self::$obj = new OperationAdd($A,$B);
break;
case '-':
self::$obj = new OperationSub($A,$B);
break;
……
}
}
}

//操作
$obj = OperationFactory:: CreationOperation('+',5,6);
echo $obj-> getResult();
?>


 


本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3