DNMVCS 1.1.2 发布。
这么多个 PHP 框架,为什么要用 DNMVCS ? 因为 DNMVCS 是无框架派者做的 PHP 框架。 包括有:
框架,只做最小的事情。 不要问 XXX 方案在 XX 框架下如何做。 而是问 XXX 方案应该如何用 PHP 去做。
最小的耦合代码。
使用 DNMVCS 框架的系统,只有入口类和 DNMVCS 系统耦合。
如果你的普通业务代码要用到 DNMVCS 的代码 ,那么肯定是你搞错了什么。
使用 DNMVCS 的业务系统,是基于组合,而不是继承的。
说得五花八门天花乱坠的 DI ,Facades。
就是为了一个: 如果发生了意外,比如发生安全漏洞,能否在不更改框架文件下解决。 能。
0 依赖也是特点? 至少我们不会因为下游不稳定而出现问题。
5 swoole
附带 swoole 支持。
如何开始
composer require dnmvcs/framework:1.1.2
./vendor/bin/dnmvcs --create
./bin/start_server.php --no-swoole
示例代码。从教程,你可以完整的了解 DNMVCS 情况
<?php // view/test/done.php ?>
<!doctype html><html><body>
<h1>test</h1>
<div><?=$var ?></div>
</body></html>
<?php
// app/Controller/test.php
namespace MY\Controller;
// use MY\Base\BaseController;
use MY\Base\ControllerHelper as C;
use MY\Service\MiscService;
class test // extends BaseController
{
public function done()
{
$data=[];
$data['var']=C::H(MiscService::G()->foo());
C::Show($data); // C::Show($data,'test/done');
}
}
<?php
// app/Service/MiscService.php
namespace MY\Service;
use MY\Base\ServiceHelper as S;
use MY\Base\BaseService;
use MY\Model\NoDB_MiscModel;
class MiscService extends BaseService
{
public function foo()
{
$time=NoDB_MiscModel::G()->getTime();
$ret="<".$time.">";
return $ret;
}
}
<?php
// app/Model/NoDB_MiscModel.php
namespace MY\Model;
use MY\Base\BaseModel;
use MY\Base\ModelHelper as M;
class NoDB_MiscModel extends BaseModel
{
public function getTime()
{
return DATE(DATE_ATOM);
}
}
<?php
require(__DIR__.'/../headfile/headfile.php');
$options=[];
$path=realpath(__DIR__.'/..');
$options['path']=$path;
$options['namespace']='MY';
\DNMVCS\DNMVCS::RunQuickly($options, function () {
});
项目地址:
https://github.com/dvaknheo/DNMVCS
欢迎大家给个宝贵意见。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.