亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

設計模式非常的多,這里介紹單例模式,工廠模式,組合模式,策略模式4種模式

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

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

相關文章

  • jQuery Mobile + PHP實現(xiàn)文件上傳

    jQuery Mobile + PHP實現(xiàn)文件上傳

    這篇文章主要介紹了jQuery Mobile + PHP實現(xiàn)文件上傳的方法實例,以及由于自己疏忽造成的問題的解決方法,這里推薦給大家,有需要的小伙伴參考下
    2014-12-12
  • Laravel學習教程之廣播模塊詳解

    Laravel學習教程之廣播模塊詳解

    這篇文章主要給大家介紹了關于Laravel學習教程之廣播模塊的相關資料,廣播是指發(fā)送方發(fā)送一條消息,訂閱頻道的各個接收方都能及時收到消息,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Yii2框架實現(xiàn)利用mpdf創(chuàng)建pdf文件功能示例

    Yii2框架實現(xiàn)利用mpdf創(chuàng)建pdf文件功能示例

    這篇文章主要介紹了Yii2框架實現(xiàn)利用mpdf創(chuàng)建pdf文件功能,結合實例形式分析了mpdf的下載、安裝及結合Yii2框架創(chuàng)建pdf文件的相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • php5.3以后的版本連接sqlserver2000的方法

    php5.3以后的版本連接sqlserver2000的方法

    這篇文章主要介紹了php5.3以后的版本連接sqlserver2000的方法,包括php5.4、php5.5等版本的通用解決方法,需要的朋友可以參考下
    2014-07-07
  • thinkphp5 加載靜態(tài)資源路徑與常量的方法

    thinkphp5 加載靜態(tài)資源路徑與常量的方法

    這篇文章主要介紹了thinkphp5 加載靜態(tài)資源路徑與常量的方法的相關資料,需要的朋友可以參考下
    2017-12-12
  • Laravel5.1 框架模型一對一關系實現(xiàn)與使用方法實例分析

    Laravel5.1 框架模型一對一關系實現(xiàn)與使用方法實例分析

    這篇文章主要介紹了Laravel5.1 框架模型一對一關系實現(xiàn)與使用方法,結合實例形式分析了laravel5.1框架模型一對一關系的原理、定義與使用方法,需要的朋友可以參考下
    2020-01-01
  • PHPMYADMIN導入數(shù)據(jù)最大為2M的解決方法

    PHPMYADMIN導入數(shù)據(jù)最大為2M的解決方法

    PHPMYADMIN還原數(shù)據(jù)庫的時候上傳的最大限制:2,048 KB,數(shù)據(jù)庫稍微大一些就無法處理,要么使用其他的備份還原工具如帝國備份王,要么就分卷導出,那么有沒有辦法還使用PHPMYADMIN來處理呢
    2012-04-04
  • php 偽靜態(tài)之IIS篇

    php 偽靜態(tài)之IIS篇

    上篇文章我們講解了APACHE服務器下偽靜態(tài)的實現(xiàn),不過在國內(nèi)還是IIS的服務器要多些,特別是個人站長,那么,我們再來學習下IIS下php偽靜態(tài)的實現(xiàn)過程吧
    2014-06-06
  • PHP文件及文件夾操作之創(chuàng)建、刪除、移動、復制

    PHP文件及文件夾操作之創(chuàng)建、刪除、移動、復制

    這篇文章主要介紹了PHP文件及文件夾操作之創(chuàng)建、刪除、移動、復制的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 純php打造的tab選項卡效果代碼(不用js)

    純php打造的tab選項卡效果代碼(不用js)

    用php實現(xiàn)的tab選項卡效果,根據(jù)get判斷,獲取get生成css與對應的內(nèi)容,當然效率肯定沒有靜態(tài)的好,這里給出的思路與方法。
    2010-12-12

最新評論