当前位置:  编程技术>php
本页文章导读:
    ▪快速记录日志的php自定义函数      php快速记录日志的函数,接收两个参数,日志内容与日志等级。   代码示例: <?php /**  * record logs file  * @param <type> $lvevel  * @param string $level  * @http://www. */ define("YUC_LOG_TYPE", "1,2,3,.........
    ▪php设计模式之工厂模式的实例代码      php设计模式之工厂模式的例子。 代码示例: <?php /**   *php设计模式 工厂模式   *site http://www. */ class FruitFactory {  private $history, $class, $constructor_args;  /**   * Create a factory of given class. Acc.........
    ▪php设计模式之单例模式的实例代码      php设计模式之单例模式的例子。   代码示例: <?php /** * php设计模式 单例模式 * site http://www. */ class Fruit {        private static $instanceMap = array();     //protected getter for singleton instances.........

[1]快速记录日志的php自定义函数
    来源: 互联网  发布时间: 2013-12-24

php快速记录日志的函数,接收两个参数,日志内容与日志等级。
 

代码示例:

<?php
/**
 * record logs file
 * @param <type> $lvevel
 * @param string $level
 * @http://www.
*/

define("YUC_LOG_TYPE", "1,2,3,4,5,6"); //日志级别
define("M_PRO_DIR", "./"); //日志目录
define("FILE_APPEND", 1); //是否追加

function Write($msg, $level) {
    $arr_level = explode()(',', YUC_LOG_TYPE);
    if (in_array($level, $arr_level)) {
        $record = date('Y-m-d H:m:s') . " >>> " . number_format(microtime(TRUE), 5, ".", "") . ' ' . " : " . $level . "\t" . $msg;
        $base = M_PRO_DIR . "/Log";
        $dest = $base . "/" . date("YmdH", time()) . 'log.php';
        if (!file_exists($dest)) {
            @mkdir($base, 0777, TRUE);
            @file_put_contents($dest, "<?php die('Access Defined!');?>\r\n", FILE_APPEND);
        }
        if (file_exists($dest)) {
            @file_put_contents($dest, $record . "\r\n", FILE_APPEND);
        }
    }
}

//调用示例
$msg = "www.---access logs--testing---";
write($msg, 2);
?>

执行后的结果,如下图所示:

在当前目录下,创建Log目录,并在其中生成日志文件。


    
[2]php设计模式之工厂模式的实例代码
    来源: 互联网  发布时间: 2013-12-24

php设计模式之工厂模式的例子。

代码示例:

<?php
/**
  *php设计模式 工厂模式
  *site http://www.
*/
class FruitFactory {
 private $history, $class, $constructor_args;
 /**
  * Create a factory of given class. Accepts extra arguments to be passed to
  * class constructor.
 */
 function __construct( $class ) {
    var_dump($args = func_get_args());
 
   $this->class = $class;//类名
   $this->constructor_args = array_slice( $args, 1 );//参数
 }
 
 function __call( $method, $args ) {
   $this->history[] = array(
   'action' => 'call',
   'method' => $method,
   'args'    => $args
  );
   var_dump($this->history);
 }
 
 function __set( $property, $value ) {
  $this->history[] = array(
  'action' => 'set',
  'property' => $property,
  'value' => $value
  );
 var_dump($this->history);
 }
 
 /**
  * Creates an instance and performs all operations that were done on this MagicFactory
  */
 function instance() {
  # use Reflection to create a new instance, using the $args
  $reflection_object = new ReflectionClass( $this->class );
  $object = $reflection_object->newInstanceArgs( $this->constructor_args );
 
 
  foreach( $this->history as $item ) {
  if( $item['action'] == 'call' ) { 
     //运行实例的方法
     call_user_func_array( array( $object, $item['method'] ), $item['args'] );
  }//属性赋值
  if( $item['action'] == 'set' ) {
     $object->{$item['property']} = $item['value'];
  }
  }
 
  # Done
  return $object;
 }
 }
 
 class Fruit {
    private $name, $color;
    public $price;
 
 function __construct( $name, $color ) {
    $this->name = $name;
    $this->color = $color;
 }
 
 function setName( $name ) {
    $this->name = $name;
 }
 
 function introduce() {
    print "Hello, this is an {$this->name} {$this->color}, its price is {$this->price} RMB.";
 }
 }
 
 # Setup a factory
 $fruit_factory = new FruitFactory('Fruit', 'Apple', 'Gonn');
 $fruit_factory->setName('Apple');
 $fruit_factory->price = 2;
 
 # Get an instance
 $apple = $fruit_factory->instance();
 $apple->introduce();
 ?>


    
[3]php设计模式之单例模式的实例代码
    来源: 互联网  发布时间: 2013-12-24

php设计模式之单例模式的例子。
 

代码示例:

<?php
/**
* php设计模式 单例模式
* site http://www.
*/
class Fruit {   
    private static $instanceMap = array();
    //protected getter for singleton instances
protected static function getSingleton($className)
{
   //保证单例模式 并且不能从控制器实例化和克隆
   if(!isset()(self::$instanceMap[$className]))
   {
       $object = new $className;
       //Make sure this object inherit from Singleton
       if($object instanceof Fruit)
    {   
           self::$instanceMap[$className] = $object;
           var_dump($object);
        }
            else
    {
                throw SingletonException("Class '$className' do not inherit from Singleton!");
            }
        }
        return self::$instanceMap[$className];
    }   
   
    //protected constructor to prevent outside instantiation
    protected function __construct(){
    }
   
    //denie cloning of singleton objects
    public final function __clone(){
        trigger_error('It is impossible to clone singleton', E_USER_ERROR);
    }   
}

class Apple extends Fruit {   
    protected $rndId;
   
    public function __construct(){
        $this->rndId = rand();
    }   
   
    public function whatAmI(){
        echo 'I am a Apple('.$this->rndId.')<br />';
    }
    public static function getInstance(){
   //echo get_class();
        return Fruit::getSingleton(get_class());
    }
}
class GreenApple extends Apple {
    public function whatAmI(){
        echo 'I am a GreenApple('.$this->rndId.')<br />';
    }
   
    public static function getInstance(){
        return Fruit::getSingleton(get_class());
    }
}
$apple1 = Apple::getInstance();
//var_dump($apple1);
$apple2 = GreenApple::getInstance();
$apple1->whatAmI();// should echo 'I am a Apple(some number)
$apple2->whatAmI();// should echo 'I am a GreenApple(some number)
$apple1 = Apple::getInstance();
$apple2 = GreenApple::getInstance();
//保证单例模式
$apple1->whatAmI();// should echo 'I am a Apple(same number as above)
$apple2->whatAmI();// should echo 'I am a GreenApple(same number as above)
// $a = clone $apple1;// this should fail
// $b = clone $apple2;// this should fail
?>

您可能感兴趣的文章:
php单例模式为何只能实例化一次
学习php设计模式之单例模式
php实现的单例模式的例子
学习php单例模式及应用实例
php单例模式的演示代码
有关php单例模式介绍及例子
php设计模式之单例模式学习
php单例模式的例子


    
最新技术文章:
▪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