日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

PHP面试题之设计模式

發(fā)布時間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 PHP面试题之设计模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設計模式是技術面試的時候難免會被問到的一個問題,特別會讓你舉例說明各種設計模式的使用場景。

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

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

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

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

總結

以上是生活随笔為你收集整理的PHP面试题之设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。