lyhiving/mmodel

PHP mini model.Fast MySQL select/insert/update/delete actions.

2.7 2022-07-06 03:47 UTC

This package is auto-updated.

Last update: 2024-12-06 08:38:49 UTC


README

php 小模型。

快速实现CRUD操作的小模型

普通版CRUD + 远程CRUD 用于快速开始项目

安装

使用 Composer

composer require lyhiving/mmodel

{
    "require": {
            "lyhiving/mmodel": "2.*"
    }
}

用法

  1. 本地使用
<?php

//引入autoload.php 
use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;

//如果想使用文件缓存,请确保缓存文件的安全
// $cache = new Mcache('files', ['path' => __DIR__ . '/.cachemeta']);

//使用redis缓存
$cache = new Mcache('redis', [
    'host' => 'localhost', //Redis server
    'port' => 6379, //Redis port
    'password' => 'root', //Redis password
    'database' => 0 //Redis db
]);

//配置参数
$options = [
    // 'driver' => 'mysql',
    'host' => 'localhost',
    // 'port' => '3306',
    'username' => 'root',
    'password' => 'root',
    'dbname' => 'test',
    'prefix' => 'cloud_',
    // 'pconnect' => 1,
    'charset' => 'utf8mb4',
];

$model = new Mmodel($options);
//设置缓存
$model->set_cache($cache);
$model->quick('cms');
$data = $model->select(array('contentid' => 1));
var_dump($data);
  1. 远程使用

服务端:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;
use Hprose\Http\Server;

//缓存
$cache = new Mcache('redis', [
    'host' => 'localhost',
    'port' => 6379,
    'password' => 'root',
    'database' => 0
]);

//配置
$options = [
    'driver' => 'mysql',
    'host' => 'localhost',
    'port' => '3306',
    'username' => 'root',
    'password' => 'root',
    'dbname' => 'test',
    'prefix' => 'cloud_',
    'pconnect' => 1,
    'charset' => 'utf8mb4',
];

$model = new Mmodel($options);
$model->set_cache($cache); 

$server = new Server();
$server->addInstanceMethods($model->db);
$server->setCrossDomainEnabled();
$server->start();

客户端:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mcache;
use lyhiving\mmodel\Mmodel;

$options = [
    'driver' => 'rpc',
    'url' => 'http://localhost/mmodel/examples/server.php',
    'prefix' =>'cloud_'    //如果有设置前缀,一定要在配置注明
];


$model = new Mmodel($options);
$model->quick('cms');
$data = $model->select(array('contentid' => 1));
var_dump($data);

简单模板viewer的使用:

<?php
//引入autoload.php 

use lyhiving\mmodel\Mmodel;

//初始化指定路径
$template = Mmodel::template(['dir' => __DIR__ . '/templates/']);

//赋值方法一
$template->assign('time', time());

//赋值方法二
$template->assign(['time2'=>microtime(true)]);

$template->assign('data',[['id'=>1,'name'=>'name1'],['id'=>2,'name'=>'name2']]);

//选择模板
$template->display('demo');

关于远程调用的加密

目前先这样用,远程的地址复杂点就是了。

TODO: 看情况加入渐变验证组件。

关于缓存

缓存实际上使用了 phpfastcache, 一个很不错的缓存包。由于安全相关的问题,目前使用到V8.1.0版本,该版本要求PHP>=7.3, 希望可以兼容多点的PHP版本。

实际上如果非常轻便的开发,甚至连缓存都可以不用。

使用缓存的时候注意,如果更新了表结构需要清除缓存。如果不清,默认15分钟后缓存失效。

关于hprose

目前hprose的作者估计想升级到hprose3.0。但3.0使用的compsoser要求安装ext_hprose扩展,这个对于部分同学部署起来并不友好。因此我限制使用2.0.40的版本,该版本不需要安装相关的扩展。

啰嗦一句,其实Andot 弄这个hprose很久的了,我也很早的时候就用上了。多久?那个时候还叫PHPRPC的时候 :)

hprose支持很多语言,性能很很帅,可惜文档就是不给力。作者也是维护多语言版本,生态没弄好。希望hprose会好起来。