<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 模型model 在看模型之前,我們先看一段yaf作者鳥哥在他自己博客里的一段文字吧: > 還有不少同學問, 為什么Yaf沒有ORM, 這里有倆方面的考慮: 首先, Yaf并不是萬能的, 它只是解決了應用中, 最基本的一個問題, 就是框架帶來的額外的性能開銷, 然而這本部分的開銷和你的應用實際的開銷相比, 往往是很小的. 但是, Yaf卻代表著一種精神, 就是追求簡單, 追求高效, 追求:”簡單可依賴”, 所以Yaf專注于實現最核心的功能, 提供最穩定的實現. 相比ORM, 如果要實現的很方便, 那必然會很復雜, 在當時的情況下, 實現ORM有可能會引入不穩定性 第二, 也是最重要的一點是PHP已經提供了對DB的一個輕度封裝的PDO, 我認為直接使用PDO, 會更加簡單, 更加高效, 我不希望提供一個復雜的ORM包裝, 鼓勵大家去拋棄簡單的PDO而使用ORM. 所以, 最初的時候, Yaf并不包含ORM. 誠然, ORM可以提高開發效率, 尤其對于一些簡單應用, 所以我想在后續的Yaf的版本中, 會考慮加入ORM, 但是那也絕對會是一個簡單的ORM, 類似于Yaf的內建視圖引擎: Yaf_View_Simple, 簡單可依賴. 顯然,目前yaf是沒有內置的操作數據庫類了,那只能自己diy了,yaf的model規則是,類名以Model為后綴,放在放置在models文件夾下面 下面我們來Diy: #### 先在application.ini配置文件里添加數據庫配置信息: `db.type=mysql db.host=localhost db.database=test db.username=root db.password=123 db.charset = utf8 db.log = false db.collation=utf8_unicode_ci db.prefix =` #### 在models文件夾下面新建一個base.php文件: `<?php class baseModel { protected $link; //構造函數 public function __construct($db_config = array()) { if(empty($db_config)){ $db_config = Yaf_Application::app()->getConfig()->db; } $this->link = $this->connect($db_config["host"], $db_config["username"], $db_config["password"], $db_config["database"]); } //數據庫連接 public function connect($dbhost, $dbuser, $dbpw, $dbname, $charset = 'utf8') { $this->link = @mysqli_connect($dbhost, $dbuser, $dbpw, $dbname); if (!$this->link) { return "database error:" . mysqli_connect_errno(); } if (!@mysqli_select_db($this->link, $dbname)) { return 'database error'; } mysqli_query($this->link,"set names " . $charset); return $this->link; } //查詢 public function query($sql) { $query = mysqli_query($this->link, $sql); return $query; } //獲取全部記錄 public function get_all($sql,$result_type = MYSQL_ASSOC) { $query = $this->query($sql); $i = 0; $rt = array(); while($row =& mysqli_fetch_array($query,$result_type)) { $rt[$i]=$row; $i++; } return $rt; } public function add($data = array()){ return true; } } ?>` 當然,上面只是一個簡單的數據庫操作演示,因為懶,只做了連接數據,然后一個執行sql的query()方法。到這里我們就可以直接在控制器里調用這個model去操作數據庫了。 ### 在控制器中調用baseModel操作 `<?php class IndexController extends Yaf_Controller_Abstract { public function indexAction() { Yaf_Dispatcher::getInstance()->disableView(); $mod = new baseModel(); $sql = 'select * from user'; $data = $mod->get_all($sql); print_r($data); }` 在控制器中使用$mod = new baseModel()實例化模型的時候,系統會自動加載model下面的base.php文件,無需手動加載。 如果我們在模型層還有其它的一些操作需求,那可以再擴展一下,比如說: #### 在剛才的models文件夾下我們可以再新建一個user.php `<?php class UserModel extends baseModel{ //再這里就可以再定義這個模型下面的操作方法 } ?>` 這個模型只要指定繼承剛才定義的baseModel,它就擁有了baseModel里面的所有方法,在控制器中使用UserModel: `<?php class IndexController extends Yaf_Controller_Abstract { public function indexAction() { $mod = new UserModel(); $sql = 'select * from user'; $data = $mod->get_all($sql); print_r($data); }` ### 載入第三方的ORM 上面只是一個簡單的model實現方法,大家可以再自行完善。 在一些項目中,ORM可以提高開發效率,我這里也嘗試著載入lavarel框架中所使用的Eloquent ORM。 Eloquent ORM操作介紹:http://www.golaravel.com/laravel/docs/4.2/eloquent/ 因為下載有點慢,我就直接從laravel5.1的包里面直接復制出的eloquent。 #### 1、將文件夾放置到library下面,如下所示 ![](https://box.kancloud.cn/2015-11-26_56567b1eda2f5.png) #### 2、在Bootstarp.php初始化eloquent `<?php Yaf_loader::import("/vendor/autoload.php"); use Illuminate\Container\Container; use Illuminate\Database\Capsule\Manager as Capsule; class Bootstrap extends Yaf_Bootstrap_Abstract{ private $config; public function _initConfig() { $this->config = Yaf_Application::app()->getConfig(); Yaf_Registry::set("config", $this->config); } //載入數據庫ORM public function _initDatabase() { $database = array( 'driver' => $this->config->db->type, 'host' => $this->config->db->host, 'database' => $this->config->db->database, 'username' => $this->config->db->username, 'password' => $this->config->db->password, 'charset' => $this->config->db->charset, 'collation' => $this->config->db->collation, 'prefix' => $this->config->db->prefix, ); $capsule = new Capsule; // 創建鏈接 $capsule->addConnection($database); // 設置全局靜態可訪問 $capsule->setAsGlobal(); // 啟動Eloquent $capsule->bootEloquent(); }` #### 在models文件夾下新建UsersModel的Users.php: `<?php use Illuminate\Database\Eloquent\Model as Mymodel; class UsersModel extends Mymodel{ protected $table = 'user'; } ?>` #### 在控制器中調用: `<?php class IndexController extends Yaf_Controller_Abstract { public function indexAction() { Yaf_Dispatcher::getInstance()->disableView(); $mod = new UsersModel(); $data = $mod->find(1)->toArray(); print_r($data); }` 更多關于Eloquent ORM的操作介紹可移步:http://www.golaravel.com/laravel/docs/4.2/eloquent/
                  <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>

                              哎呀哎呀视频在线观看