欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工作中常用到的一些函数及单例模式

程序员文章站 2024-02-21 16:51:58
...

生成唯一的订单号
$order_id = date(‘Ymd’).substr(implode(NULL, array_map(‘ord’, str_split(substr(uniqid(), 7, 13), 1))), 1, 9);

将数组转换成url地址

function url_params_str($data)
{
    $str = "";
    foreach ($data as $k => $v)
    {
        if( $v != "" && !is_array($v)){
            $str .= $k . "=" . $v . "&";
        }
    }

    $str = trim($buff, "&");
    return $str;
}

生成随机字符串

function randString()
{
    $string = '[email protected]#$%^&*';
    $str = '';
    for($i = 0;$i < 32;$i++)
    {
        $str .= $string[mt_rand(0,69)];
    }
    return $str;
}
$a = randString();

区别
__construct()
__construct(): 是PHP内置的构造函数,实例化之前 PHP 解析引擎自动调用,做一些初始化的工作

init() :
init()方法一般都是自己定义的,一般会在__construct() 中调用。功能和__construct()差不多但是需要自己写调用,用来初始化东西的。

protected function __construct
如果 __construct 定义为 protected 那么就不能直接实例化了,需要添加一个额外的入口,这个入口一般是静态方法public static function instance

class Test {

    public $problem = '';
    public function init(array $config) {
        echo "3: init".PHP_EOL;
    }

    protected function __construct(array $config = array()) {
        echo "2: __construct".PHP_EOL;
        $this->problem = $config;
        $this->init($config);
    }

    public static function instance($config = array()) {
        echo "优先级1: 实例化".PHP_EOL;
        return new self($config);
    }


}

$config = array("test"=>'cs');

$test = Test::instance($config);
var_dump($test);

结果

优先级1: 实例化 2: __construct 3: init
C:\wamp64\www\index.php:27:
object(Test)[1]
  public 'problem' => 
    array (size=1)
      'test' => string 'cs' (length=2)

单例模式

class Singleton  
{  
    /** 
     * Description:(1)静态变量,保存全局实例,跟类绑定,跟对象无关 
     *             (2)私有属性,为了避免类外直接调用 类名::$instance,防止为空 
     */  
    private static $instance;  
    private $db;  
      
    /** 
     * 私有化构造函数,防止外界实例化对象 
     */  
    private static function __construct()  
    {  
    }  
      
    /** 
     *私有化克隆函数,防止外界克隆对象 
     */  
    private function __clone()  
    {  
    }  
      
    /** 
     * 静态方法,单例访问统一入口 
     * 返回应用中的唯一对象实例 
     */  
    public static function GetInstance()  
    {  
        if (!(self::$instance instanceof self))  
        {  
            self::$instance = new self();  
        }  
        return self::$instance;  
    }  
      
    /** 
     * Description:获取数据库的私有方法的连接句柄 
     */  
    public function GetDbConnect()  
    {  
        return $this->db;  
    }  
}