本教程示例代碼見:https://github.com/creazy412/yaf_2_eloquent_orm
?
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供秀洲網(wǎng)站建設(shè)、秀洲做網(wǎng)站、秀洲網(wǎng)站設(shè)計(jì)、秀洲網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、秀洲企業(yè)網(wǎng)站模板建站服務(wù),十多年秀洲做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
?
Yaf 是鳥哥(Laruence)在倆年前寫的一個(gè)PHP擴(kuò)展的MVC框架. 開發(fā)Yaf的目的是為了解決使用框架帶來的性能下降的經(jīng)典矛盾.
?
鏈接有一篇框架作者本人對(duì) Yaf 框架的理解說明。
?
Yaf框架的一個(gè)特點(diǎn)就是輕量,很多東西比如ORM都沒有官方提供,而是交由開發(fā)者自己選擇自己喜歡的ORM或者自己開發(fā)一套ORM在框架中使用,而在此次項(xiàng)目中,我使用了Laravel框架的Eloquent ORM,目前Laravel已經(jīng)將自己的Eloquent ORM進(jìn)行了組件化,只需要使用composer就可以安裝,安裝完成后,在Yaf的bootstrap文件中,引入composer的autoload文件即可。
?
?
PHP 版本要求 >= 5.4,這是 Eloquent 的最低要求。
這里使用的 phpstudy 集成環(huán)境安裝包
下載 Yaf 框架,地址是 http://pecl.php.net/package/yaf ,下載完成后按照手冊(cè)安裝即可(http://www.laruence.com/manual/yaf.install.html#yaf.configure),配置好 HTTP 服務(wù)軟件,把網(wǎng)站跑起來。如果你已經(jīng)看到了以下畫面,就可以繼續(xù)往下做了:
?
?
??我們使用 Composer 來載入和管理 Eloquent。Composer 會(huì)生成一個(gè)自動(dòng)加載('autoload')文件,我們只需要 'require' 這個(gè)文件,就可以使用所有通過 Composer 安裝的包。現(xiàn)在我們要在 CodeIgniter 項(xiàng)目中使用 Composer,在其根目錄下新建 composer.json:
{
"require": {
"php": ">=5.4.0",
"illuminate/database": "*"
}
}?
然后運(yùn)行 'composer update',稍等片刻,Composer 體系創(chuàng)建完成,同時(shí) illuminate/database 包也已經(jīng)安裝完成。
?
然后新建 'application/eloquent.php':
<?php
// defined("APP_PATH") OR exit("No direct script access allowed");
use Illuminate\Database\Capsule\Manager as Capsule;
// Autoload 自動(dòng)載入
require APP_PATH . '../vendor/autoload.php';
// 載入數(shù)據(jù)庫配置文件
require_once APP_PATH . '\conf/database.php';
// Eloquent ORM
$capsule = new Capsule;
$capsule->addConnection($db['eloquent']);
$capsule->bootEloquent();?
這個(gè)文件將會(huì)幫我們引入 Composer 的自動(dòng)加載文件,同時(shí)會(huì)幫我們初始化 Eloquent,這個(gè)文件載入了一個(gè)數(shù)據(jù)庫配置文件,在 'conf/database.php' 的最后新增(注意替換數(shù)據(jù)庫名稱和密碼):
<?php
return $db['eloquent'] = [
'driver' => 'MySQL',
'host' => 'localhost',
'database' => 'yaf',
'username' => 'root',
'password' => '123123',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => ''
];?
接下來我們需要在 Yaf 應(yīng)用啟動(dòng)的時(shí)候引入上面那個(gè)文件,在入口文件的‘index.php’ 的后部增加:
?
<?php
use Yaf\Application;
use Yaf\Exception;
use Yaf\Loader;
define("APP_PATH", realpath(dirname(__FILE__) . '/../')); /**/
// echo (APP_PATH);die;
$app = new Application(APP_PATH . "\conf\application.ini");
/*
* --------------------------------------------------------------------
* LOAD Laravel Eloquent ORM
* --------------------------------------------------------------------
*
*/
**require APP_PATH . '\application\eloquent.php';**
$app->bootstrap() /*實(shí)例化Bootstrap, 依次調(diào)用Bootstrap中所有_init開頭的方法*/
->run();?
然后,開始使用 Eloquent,修改 'application/controllers/Index.php' 中的 'bootstrapAction()' 為:
public function bootstrapAction()
{
$result = UserModel::all();
$this->getView()->assign("result", $result);
}?
新建 'application/views/index/bootstrap.phtml' 文件(為了簡(jiǎn)潔,直接使用bootstrap模版和響應(yīng)式表格):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3個(gè)meta標(biāo)簽*必須*放在最前面,任何其他內(nèi)容都*必須*跟隨其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是為了讓 IE8 支持 HTML5 元素和媒體查詢(media queries)功能 -->
<!-- 警告:通過 file:// 協(xié)議(就是直接將 html 頁面拖拽到瀏覽器中)訪問頁面時(shí) Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<ul class="nav nav-pills">
<li role="presentation" class="active"><a href="#">Home</a></li>
<li role="presentation"><a href="#">Profile</a></li>
<li role="presentation"><a href="#">Messages</a></li>
</ul>
<!-- 響應(yīng)式表格 -->
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>name</th>
<th>email</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<?php foreach ($result as $key => $value) { ?>
<tr>
<th scope="row"><?php echo $key + 1; ?></th>
<td><?php echo $value['name']; ?></td>
<td><?php echo $value['email']; ?></td>
<td>
<a href="del?id=<?php echo $value['id']; ?>">delete</a> |
<a href="edit?id=<?php echo $value['id']; ?>">edit</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依賴 jQuery,所以必須放在前邊) -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<!-- 加載 Bootstrap 的所有 JavaScript 插件。你也可以根據(jù)需要只加載單個(gè)插件。 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>?
現(xiàn)在讓我們向數(shù)據(jù)庫中填充需要使用的數(shù)據(jù),運(yùn)行 SQL 語句:
DROP TABLE IF EXISTS 'yaf';
CREATE TABLE 'yaf' (
'id' int(11) unsigned NOT NULL AUTO_INCREMENT,
'name' varchar(255) NOT NULL DEFAULT '',
'email' varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES 'yaf' WRITE;
/*!40000 ALTER TABLE 'yaf' DISABLE KEYS */;
INSERT INTO 'yaf' ('name', 'email')
VALUES
('小明', 'xiaoming@qq.com'),
('小紅', 'xiaohong@qq.com');
/*!40000 ALTER TABLE 'yaf' ENABLE KEYS */;
UNLOCK TABLES;?
然后建立模型,新建 'application/models/User.php' 文件:
?
<?php
class UserModel extends Illuminate\Database\Eloquent\Model
{
protected $table = 'yaf';
}?
至此,http://localhost:81/bd/yaf-demo/public/index.php/index/bootstrap 刷新頁面即可:
?
參考文獻(xiàn):https://lvwenhan.com/php/414.html
文章標(biāo)題:Yaf中使用LarvaelEloquentORM
文章位置:http://www.chinadenli.net/article34/piisse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、云服務(wù)器、建站公司、關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)