shomisha / stubless
一个用于生成不带stubs的PHP文件的包。
1.5.1
2021-04-28 18:11 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- nikic/php-parser: ^4.10
Requires (Dev)
- phpunit/phpunit: ^9.4
README
Stubless是一个用于生成PHP源代码的包,它使用易于阅读、流畅的对象导向API,并且不使用任何stubs。它非常适合生成命令,并减少了在程序生成PHP代码时手动操作字符串的需要。
以下是一个Stubless能做什么的示例
<?php require_once 'vendor/autoload.php'; use App\Http\Controllers\Controller; use App\Http\Requests\UserRequest; use App\Models\User; use Illuminate\Http\Request; use Shomisha\Stubless\Templates\Argument; use Shomisha\Stubless\Templates\ClassMethod; use Shomisha\Stubless\Templates\ClassTemplate; use Shomisha\Stubless\Utilities\Importable; $class = ClassTemplate::name('UsersController')->extends(new Importable(Controller::class))->setNamespace('App\Http\Controllers'); $requestArgument = Argument::name('request')->type(new Importable(Request::class)); $userArgument = Argument::name('user')->type(new Importable(User::class)); $userRequestArgument = Argument::name('request')->type(new Importable(UserRequest::class)); $class->withMethods([ ClassMethod::name('index')->addArgument($requestArgument), ClassMethod::name('show')->withArguments([ $requestArgument, $userArgument, ]), ClassMethod::name('store')->addArgument($userRequestArgument), ClassMethod::name('update')->withArguments([ $userRequestArgument, $userArgument, ]), ClassMethod::name('destroy')->addArgument($userArgument), ]); echo $class->print();
以下代码将生成以下PHP源代码
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Http\Requests\UserRequest; use App\Models\User; use Illuminate\Http\Request; class UsersController extends Controller { public function index(Request $request) { } public function show(Request $request, User $user) { } public function store(UserRequest $request) { } public function update(UserRequest $request, User $user) { } public function destroy(User $user) { } }
免责声明:Stubless是针对类生成进行开发和优化的,并将在不久的将来以同样的思路进行升级。在某个时候,我可能会更多关注非面向对象的PHP生成,但这还远在未来,目前没有计划。
要了解更多关于如何使用Stubless及其所有功能,请查看wiki页面。