我正在开始一个新项目,我想重用它的一些部分,主要是与用户注册和身份验证相关的内容。我可以复制并粘贴所有代码,但我想再次使用。我知道Laravel中有Package Development
,但这并不容易,并且觉得必须有更好的方法。
前几天我发现pingpong/modules
,但我不知道。它的第三方插件并不信任它。
使用此插件是真的吗?这个插件会在以后更新吗? Embedd Package Laravel
和pingpong/modules
之间有什么不同?或者你有什么建议吗?
答案 0 :(得分:3)
Pingpong modules
似乎是为早期版本的Laravel 5构建的,以及它们与未来版本(可能是当前的5.1.11)的兼容程度,我不能说。
从最近的提交超过6个月之前的今天(18月12日)开始,看看2.1的提交历史并没有多少活动。
但是专为Laravel设计的包装?好像。它们提供了许多对开发有用的功能。唯一不幸的是你在自己的git
环境中得到了很多代码(这是件好事吗?我不知道,你更喜欢什么)。
就我个人而言,我不喜欢以这种方式进行开发,我更喜欢它们在vendor
/文件夹中,否则将它更新到更新的版本会很痛苦。
由于Laravel 5 Taylor想要使包开发不再具体,就像在Laravel 4中一样。使用Laravel
制作包的唯一方法就是使用{{ServiceProvider
来做(但不是必须) 1}}'第ServiceProvider
是Laravel应用程序的引导程序。
如果你想扩展或实现你自己的功能,请分叉回购并自己构建它并托管它(通过github / packagist或使用Satis的私人仓库)。
Pingraong模块(2.1)是为Laravel 5构建的,你所描述的(嵌入式Laravel软件包)更适用于Laravel 4,因为你需要更具体的方式来编写软件包。
每当您想要一个更活跃的项目/包进行开发时,您应该尝试使用Asgard CMS。它们非常模块化,我认为我读到的地方受到了这个包的启发(完全不确定)。
当然,您可以构建自己的包以获得相同的结果。并根据需要将其创建为模块化。我为我的公司创建了很多modules
,我们可以创建非常简单的整个系统以及使用和扩展/覆盖模块。即使模块中的小部件也可以被覆盖以满足特定需求。
对于CMS / API模块,我们选择了与Laravel项目的app/
文件夹几乎相同的结构。
包看起来像:
tests/
src/
Acme/
Controllers/
Requests/
Models/
Module.php // contains some specifc calculations for example
ModelServiceProvider.php
composer.json
在composer.json
文件中,我们自动加载:"Module\\": "src/"
在config/app.php
我们注册ModuleServiceProvider
。现在我们将功能注入Laravel的容器中,我们可以通过app()
实例使用它。
但是,只要我们只想在另一个项目或独立项目中使用Models
,我们仍然可以使用它,因为来自composer
的自动加载功能以及我们构建程序包的方式。可以使用:
<?php
require_once __DIR__ .'/vendor/autoload.php';
use Module\Models\Module;
$module = new Module;
我们想要使用的包结构,有一个API或CMS的部分:
tests/
src/
Cms/
Controllers/
Requests/
Api/
Controllers/
Transformers/
Models/
Module.php // contains some specifc calculations for example
Providers/
CmsServiceProvider.php // includes `ModuleServiceProvider`
ApiServiceProvider.php // includes `ModuleServiceProvider`
ModuleServiceProvider.php // contains global stuff like commands etc.
composer.json
而不是在ModuleServiceProvider
注册config/app.php
,而是根据客户/项目的意愿注册ApiServiceProvider
或CmsServiceProvider
。
答案 1 :(得分:1)
要重复使用您的课程,只需使用php namespaces
或use
即可回复您的作品。
使用命名空间
namespace Acme\Tools;
class Foo
{
echo "me";
}
您可以拨打电话班foo
<?php
$foo = new \Acme\Tools\Foo();
使用。
您还可以使用use
声明,如下所示:
<?php
use \Acme\Tools\Foo;
$foo = new Foo();
使用中间件
您还应该使用中间件来过滤谁应该使用脚本,即Auth
中间件,这将帮助您过滤用户,注册和登录阅读更多http://laravel.com/docs/5.1/middleware
使用Eloquent
使用ORM为您的模型创建REST api,它非常简单,总是让您的控制器类扩展使用Illuminate\Database\Eloquent\Model;
,即:
use Illuminate\Database\Eloquent\Model;
。阅读更多http://laravel.com/docs/5.1/eloquent
最后使用Laravel In内置帮助程序功能 有许多Laravel In内置的Helper功能,只需查看文档即可帮助您
答案 2 :(得分:0)