最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP經(jīng)典面試題之設(shè)計(jì)模式(經(jīng)常遇到)

 更新時(shí)間:2015年10月15日 14:50:57   投稿:mrr  
php中設(shè)計(jì)模式非常多,但是設(shè)計(jì)模式在php面試題經(jīng)常會提到,本文主要給大家介紹php經(jīng)典面試題之設(shè)計(jì)模式,需要的朋友一起看看吧

設(shè)計(jì)模式在面試過程中經(jīng)常會提到,有時(shí)候還會讓我們舉例說明各種設(shè)計(jì)模式的應(yīng)用場景。

使用設(shè)計(jì)模式可以減輕我們的工作量,優(yōu)化我們的代碼。

設(shè)計(jì)模式非常的多,這里介紹單例模式,工廠模式,組合模式,策略模式4種模式

如果有代碼有什么問題或者有更好的方式請告知,謝謝!!!!!

/**
 * 單例模式
 * @author YangYang <1812271619@qq.com>
 * 可以想成在一次http請求中只產(chǎn)生該類的一個(gè)對象(即只new classname一次)
 * 經(jīng)典的例子是數(shù)據(jù)庫連接(redis,mongodb,memcache等)
 * 在一次http請求中我們可能需要對數(shù)據(jù)庫做增刪改查多條sql操作
 * 但是如果一次http請求中每執(zhí)行一條sql我們就mysql_connect(),很明顯會導(dǎo)致服務(wù)器資源的浪費(fèi)
 * 為了節(jié)約資源,就可以通過單例模式來實(shí)現(xiàn)一次http請求只做一次mysql_connect()
 * 即將mysql_connect()放在類方法的__construct中,并將__construct方法做成私有,
 * 這樣只能通過getInstance()方法來獲得mysql_connect()的資源連接符
 * getInstance()方法中判斷是否已經(jīng)存在myql連接符,如果存在就直接返回該連接符
 * 否則new classname()即調(diào)用了__construct方法執(zhí)行了mysql_connect()得到了資源連接符,并返回連接符
 * 因?yàn)楝F(xiàn)在PHP已不再建議直接使用mysql函數(shù)進(jìn)行數(shù)據(jù)庫操作,而是建議通過PDO進(jìn)行數(shù)據(jù)庫操作,所以這里寫一個(gè)簡易PDO連接的單例模式
 * 這里只是講解單例原理,數(shù)據(jù)庫的防sql注入等問題不做考慮
 * 準(zhǔn)備工作 數(shù)據(jù)庫:test 數(shù)據(jù)表:user 字段:id name 記錄:1 CodeAnti
 * 最終運(yùn)行結(jié)果: 數(shù)據(jù)表user中id=1這條記錄被刪除
 */
class SinglePDO
{
    private static $_instance = null;
    private $_pdo;
    //私有,防止外部直接實(shí)例化new SinglePDO(...)
    private function __construct($dsn,$dbUser,$dbPassword)
    {
        try{
            $this->_pdo = new PDO($dsn,$dbUser,$dbPassword);
            $this->_pdo->exec('set names utf8');
        }catch(PDOException $e){
            die("Error:{$e->getMessage()}");
        }
    }
    //私有,防止克隆
    private function __clone(){}
    //獲取連接實(shí)例
    public static function getInstance($dsn,$dbUser,$dbPassword)
    {
        if(self::$_instance === null)
            self::$_instance = new self($dsn,$dbUser,$dbPassword);
        return self::$_instance;
    }
    //執(zhí)行sql
    public function execSql($sql)
    {
        $result = $this->_pdo->exec($sql);
        return $result;
    }
}

$dsn = "mysql:host=localhost;dbname=test";
$dbUser = "root";
$dbPassword = "";
$sql = "delete from user where id = 1";
$pdo = SinglePDO::getInstance($dsn,$dbUser,$dbPassword);
$result = $pdo->execSql($sql); //$pdo->execSql($sql)多次調(diào)用,但仍然是同一個(gè)pdo對象
print_r($result);

相關(guān)文章

最新評論

寿光市| 冕宁县| 怀远县| 玛曲县| 康保县| 卢龙县| 苗栗县| 南江县| 孟津县| 洞口县| 金昌市| 社旗县| 新河县| 明光市| 高要市| 达州市| 怀远县| 安庆市| 赤水市| 元谋县| 山东| 襄垣县| 武汉市| 新竹市| 新密市| 太湖县| 汽车| 铁力市| 平湖市| 新巴尔虎右旗| 简阳市| 新闻| 曲沃县| 海口市| 彭山县| 华阴市| 眉山市| 唐河县| 策勒县| 石河子市| 康平县|