工作中常用到的一些函数及单例模式
程序员文章站
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;
}
}
上一篇: resin jms 配置
下一篇: Resin 4.0.15配置优化
推荐阅读