<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # PDO 操作數據庫 *** Yaf 框架(3.0.5版本)目前并沒有提供數據庫 ORM 類,據鳥哥的博客來說,以后或許會提供。使用了 ORM 類為團隊帶來的便捷和規范,但是帶來了性能的下降。直接使用 PDO 保證性能,又存在規范不足讓程序維護成本上升或安全上的風險。這就要各位讀者自行取舍。 > ORM 即 對象關系映射(英語:Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序設計技術,用于實現面向對象編程語言里不同類型系統的數據之間的轉換。[來自維基百科] > 筆者注:簡單來說 ThinkPHP5 的 Db 方法或者模型,ThinkPHP3 的 M方法和 D方法,Laravel 的 Eloquent 都屬于 ORM 類范疇 接下來我們使用單例模式創建 PDO 類 ### 1. 創建配置文件選項 打開`conf/application.ini`文件增加數據庫配置 ~~~ ; 數據庫配置 resources.database.master.host = "127.0.0.1" resources.database.master.port = 3306 resources.database.master.dbname = "eye" resources.database.master.username = "root" resources.database.master.password = "" ~~~ ### 2. 創建 Database 類(單例) 本類并沒有添加查詢,添加,修改,刪除等方法,而是將所有操作重載給 PDO 類實例,導致有些 PDO 的方法在編輯器中沒有代碼提醒,所以需要使用 `phpDocumentor` 注釋語法來開啟代碼提醒。下方代碼前兩行注釋就是我為 Database 類編寫的`query()`操作和`fetchAll()`操作的代碼提醒 ~~~php <?php /** * 方法重載函數,用于編輯器代碼提醒 * @method Database query($statement, $mode = PDO::ATTR_DEFAULT_FETCH_MODE, $arg3 = null, array $ctorargs = array()) * @method Database fetchAll($fetch_style = null, $fetch_argument = null, array $ctor_args = array()) */ class Database { // 類實例 private static $instance = null; // 連接實例 private static $link = null; // 配置文件 private static $config = []; /** * 構造函數 */ private function __construct() { self::$config = Yaf_Registry::get('config')->resources->database->master; self::$link = new PDO("mysql:host=" . self::$config['host'] . ";dbname=" . self::$config['dbname'], self::$config['username'], self::$config['password'], [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'']); } /** * 獲取實例 * @return Database */ public static function getInstance() { return self::$instance ?: (self::$instance = new self()); } /** * 魔術方法,方法重載 * @param $name * @param $arguments * @return mixed */ function __call($name, $arguments) { return self::$link->$name($arguments[0]); } /** * 禁止克隆 */ private function __clone() { } /** * 反序列化魔術方法 */ public function __wakeup() { self::$instance = $this; } /** * 析構函數 * @description 銷毀實例 */ public function __destruct() { list(self::$instance, self::$config) = [null, []]; } } ~~~ ### 3. 自動加載 Database 類 打開`application/Bootstrap.php`文件,在`_initAutoload()`方法下加入導入類代碼,實現自動導入`Database`類 ~~~php public function _initAutoload() { // 注冊 Composer Yaf_Loader::import(APPLICATION_PATH . "/vendor/autoload.php"); // 注冊數據庫 Yaf_Loader::import(APPLICATION_PATH . "/application/library/Database.php"); } ~~~ 除了可以使用 Yaf 自帶的 `Yaf_Loader` 類來引入 php 庫文件以外,也可以使用 `include()`,`require()`等方式引入 ### 4. 開始使用 現在就可以在項目中,使用`Database::getInstance()`來 PDO 操作了 ~~~php $rows = Database::getInstance()->query('SELECT `id`,`user_name`,`password` FROM users ORDER BY `id` DESC ;'); ldd($rows->fetchAll(PDO::FETCH_ASSOC)); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看