目前最新yaf版本3.3.6,可以在PHP8.3上成功安装。
安装步骤
#下载最新代码 wget https://pecl.php.net/get/yaf-3.3.6.tgz #解压 tar -zxvf yaf-3.3.6.tgz #安装 cd yaf-3.3.6/ phpize ./configure --with-php-config=/www/server/php/83/bin/php-config make && make install #修改php.ini 添加yaf.so #克隆yaf git clone https://github.com/laruence/yaf.git #生成项目skeleton cd /www/wwwroot/yaf/tools/cg php yaf_cg -d Sample -n
安装think-orm
sudo -u www composer require topthink/think-orm #入口引入think-orm require __DIR__ . '/vendor/autoload.php';
添加数据库配置
[think-orm] db.type = mysql db.hostname = 127.0.0.1 db.username = yaf db.password = myGEFhY7FKhKME3m db.database = yaf db.charset = utf8mb4 db.prefix = yaf_ db.debug = true
初始化数据库配置
<?php class Bootstrap extends \Yaf\Bootstrap_Abstract { public function _initDb(){ $ini = new \Yaf\Config\Ini(__DIR__."/../conf/db.ini"); $arr = $ini->toArray(); $config = ['default'=>'mysql','connections'=>['mysql'=>$arr['think-orm']['db']]]; (new \think\DbManager())->setConfig($config); } }
配置模型
<?php use think\Model; /** * @name SampleModel * @desc sample模型类 可以使用模型的属性和方法 * @author root */ class SampleModel extends Model{ protected $table = "yaf_sample"; public function selectSample() { return 'Hello World!'; } public function insertSample($arrInfo) { return true; } }
think-orm4新特性Enity引入
<?php class Bootstrap extends \Yaf\Bootstrap_Abstract { public function _initLoader($dispatcher) { \Yaf\Loader::getInstance()->registerNamespace('App\Entity', realpath(APPLICATION_PATH . '/application/entity')); } }
Enity sample
<?php namespace App\Entity; use think\Entity; /** * @name SampleEntity * @desc sample实体类 可以扩展业务逻辑 让模型专注查询、持久化数据 * @author root */ class SampleEntity extends Entity { public function getOptions():array { return [ 'modelClass' => \SampleModel::class, ]; } }
Enity使用
$entity = new \App\Entity\SampleEntity(); $one = \App\Entity\SampleEntity::find(1);