Yaf 中使用 Larvael Eloquent ORM
admin
2023-06-13 17:02:30
0

本教程示例代码见:https://github.com/creazy412/yaf_2_eloquent_orm
 

背景介绍

 
Yaf 是鸟哥(Laruence)在俩年前写的一个PHP扩展的MVC框架. 开发Yaf的目的是为了解决使用框架带来的性能下降的经典矛盾.
 
链接有一篇框架作者本人对 Yaf 框架的理解说明。

 

Yaf框架的一个特点就是轻量,很多东西比如ORM都没有官方提供,而是交由开发者自己选择自己喜欢的ORM或者自己开发一套ORM在框架中使用,而在此次项目中,我使用了Laravel框架的Eloquent ORM,目前Laravel已经将自己的Eloquent ORM进行了组件化,只需要使用composer就可以安装,安装完成后,在Yaf的bootstrap文件中,引入composer的autoload文件即可。
 

基础准备

 
PHP 版本要求 >= 5.4,这是 Eloquent 的最低要求。
这里使用的 phpstudy 集成环境安装包

下载 Yaf 框架,地址是 http://pecl.php.net/package/yaf ,下载完成后按照手册安装即可(http://www.laruence.com/manual/yaf.install.html#yaf.configure),配置好 HTTP 服务软件,把网站跑起来。如果你已经看到了以下画面,就可以继续往下做了:
Yaf 中使用 Larvael Eloquent ORM
 

开始嫁接

 
  我们使用 Composer 来载入和管理 Eloquent。Composer 会生成一个自动加载('autoload')文件,我们只需要 'require' 这个文件,就可以使用所有通过 Composer 安装的包。现在我们要在 CodeIgniter 项目中使用 Composer,在其根目录下新建 composer.json:

{

  "require": {

    "php": ">=5.4.0",

    "illuminate/database": "*"

  }

}

 
然后运行 'composer update',稍等片刻,Composer 体系创建完成,同时 illuminate/database 包也已经安装完成。
 
然后新建 'application/eloquent.php':

addConnection($db['eloquent']);

$capsule->bootEloquent();

 
这个文件将会帮我们引入 Composer 的自动加载文件,同时会帮我们初始化 Eloquent,这个文件载入了一个数据库配置文件,在 'conf/database.php' 的最后新增(注意替换数据库名称和密码):

 'mysql',

  'host'      => 'localhost',

  'database'  => 'yaf',

  'username'  => 'root',

  'password'  => '123123',

  'charset'   => 'utf8',

  'collation' => 'utf8_general_ci',

  'prefix'    => ''

  ];

 
接下来我们需要在 Yaf 应用启动的时候引入上面那个文件,在入口文件的‘index.php’ 的后部增加:
 

bootstrap() /*实例化Bootstrap, 依次调用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' 文件(为了简洁,直接使用bootstrap模版和响应式表格):



  
    
    
    
    
    Bootstrap 101 Template

    
    

    
    
    
  
  
    

    
    
$value) { ?>
# name email operation
delete | edit

 
现在让我们向数据库中填充需要使用的数据,运行 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' 文件:
 

 
至此,http://localhost:81/bd/yaf-demo/public/index.php/index/bootstrap 刷新页面即可:
Yaf 中使用 Larvael Eloquent ORM

 
 
 
参考文献:https://lvwenhan.com/php/414.html

相关内容

热门资讯

重庆永川遭遇特大暴雨,67岁会... 5月26日上午11点多,潇湘晨报·晨视频记者从重庆市委宣传部获悉,在重庆永川区茶山竹海街道大桥村特大...
陈克明为“手擀”商标道歉,40... 极目新闻评论员 屈旌一袋挂面能藏着多少的心眼?陈克明以40年商誉为代价,给出了一个令人唏嘘的答案。近...
荆州鸿创机械取得折弯机用挡料机... 国家知识产权局信息显示,荆州鸿创机械制造有限公司取得一项名为“一种折弯机用挡料机构”的专利,授权公告...
领雁科技数智渠道5.0:助力银... 5月23日,信华信集团举办三十周年庆典,同期召开“智敬未来·深度经营——领雁AI+金融科技创新产品发...
视频丨香港各界:神舟二十三号成... 神舟二十三号载人飞船发射取得圆满成功,引发香港社会各界热烈反响。在接受总台记者采访时,不少人表示深受...
算法1年翻倍,芯片2年翻倍?重... 新智元报道 【新智元导读】NBER重磅论文证明:AI研发的自我加速反馈环强度远超所有科技领域,算...
伊朗外交部发言人否认收取海峡“... 【文/观察者网 齐倩】美媒近期频繁放风称,美伊即将达成协议。但伊朗方面表示,双方仍就一、两项条款存在...
“永川兄弟妯娌4人被洪水卷走”... 极目新闻记者 谢茂 邓波5月23日夜间至24日凌晨,重庆市永川区突发瞬时极端特大暴雨引发山洪和地灾,...
朱媛媛,提名最佳女配角 5月26日上午,第31届上海电视节白玉兰奖电视剧类别中国电视剧单元入围名单揭晓。其中,朱媛媛凭借遗作...
“迄今为止最严厉表态”!加总理... 【环球网报道】据英国广播公司(BBC)、美国《纽约时报》等媒体报道,加拿大总理卡尼当地时间25日表示...