项目地址:
https://github.com/dvaknheo/duckphp作者 QQ: 85811616
官方 QQ 群: 714610448
//////////////////////
嗯哼,我们从头来捋一遍。作为刚学会 PHP 的新手,我们需要什么样的 Web 框架。
要配置 nginx,apache 才能用? 不配置不行么。
一个域名只能用一个框架。 放在子目录不行么。
要写什么路由表,麻烦,直接类名+方法名型的路由不行么。等我需要再写。
不能直接 echo ? 只能 return $string ?
我只会 sql,还要学个 orm 折腾。 对了,得出来的东西还不能用 var_dump,还必须用 dd();
我先想到怎么用 sql,然后再反推 orm 怎么写。
我看 sql log 得出的慢查询, 不知道应该对应到哪个 orm 的查询语句。
框架没 100% 覆盖测试( DuckPhp 自豪的一点是有 100% 的覆盖测试),有问题。我想替换官方的功能,保证调用方式不变,但实现方式由我来。
默认的 app 命名空间已经被用了。 工程只能用其他名字。
写个 api 那么麻烦么。
我的工程能作为第三方组件给其他人用么。
///////////////////////
1.2.7 相对 1.2.6 主要修复了一些小功能 ,以及改了一些选项和优化
入口文件以后就能省成这样了(前提是你在 composer.json 里加上命名空间映射 LazyToChange => 'app'
```
<?php
require_once(__DIR__.'/../vendor/autoload.php');
$options =[
//'is_debug'=>true,
];
\LazyToChange\System\App::RunQuickly($options);
```
这 $options 有上百项可以在 工程文件 LazyToChange\System\App 看解释
和其他框架的多个配置文件不同,DuckPhp 的组件都带有默认配置,你不需要每在工程里有那么多配置文件。
////
这事个简单的写 api 的例子 不用管其他控制器。 测试模式下 get 可用, 测试之后只能用 post
token 方式的话,很容易就自己加上。
// 访问方式 /test.foo2?a=1&b=2
带有参数的返回。
// 访问方式 /test.foo
```
<?php declare(strict_types=1);
/**
* DuckPhp
* From this time, you never be alone~
*/
namespace {
require_once(__DIR__.'/../../autoload.php'); // @
DUCKPHP_HEADFILE}
namespace Api {
// 后面是业务代码
// 这里自己加 api
interface BaseApi
{
}
class test implements BaseApi
{
public function index()
{
$domain=\DuckPhp\DuckPhp::Domain();
$url=$domain . \DuckPhp\DuckPhp::Url('test.foo');
$url2=$domain .\DuckPhp\DuckPhp::Url('test.foo2?a=1&b=2');
$message = <<<EOT
不带参数访问: {$url}
带参数访问:{$url2} 将会反射到 相应参数
如果需要修改 uid,则继承本扩展 RouteHookApiServer 覆盖 getObjectAndMethod() 和 getInputs()
EOT;
$ret['message']=$message;
$ret['date']=DATE(DATE_ATOM);
return $ret;
}
public function foo()
{
return DATE(DATE_ATOM);
}
public function foo2($a, $b)
{
return [$a + $b, DATE(DATE_ATOM)];
}
}
}
namespace {
$options = [
'is_debug' => true,
'skip_setting_file' => true,
'namespace'=>'',
'override_class' => '',
'ext' => [
'DuckPhp\\Ext\\RouteHookApiServer' => true,
],
'api_server_namespace' => '\\Api',
'api_server_interface' => '~BaseApi',
'api_server_404_as_exception' => true,
];
\DuckPhp\DuckPhp::RunQuickly($options);
}
```
////
在阿里云上捣鼓了一阵 TechEmpower/FrameworkBenchmarks 。没搞定,不知道配置出了什么问题。 他的 py 脚本有时出现 tfb-database 连接不上。
估计了一下,性能上有 50% 。比不上 ubiquity 。但是远强于 laravel 。
本来这个版本计划是加上性能测试再来的。这里先发出来了。
要写的 todo 有好几个,
和 ubiquity 那样上不同平台。
增加 命名行模式(是的,目前只是 web 框架,需要加上 console 插件模式。
增加 安装脚本规范。
加油,希望明年这个时候,能有一小撮人用起来。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.