shahburhan / owa
Laravel 包,用于面向对象设计,具有动作功能
v1.1.1
2022-07-14 20:26 UTC
Requires
- php: >=7.2.5
This package is auto-updated.
Last update: 2024-09-04 20:29:37 UTC
README
面向对象的结构化设计,用于创建相互关联的对象和动作
亮点
- 本包将每个模型视为一个对象,并根据该概念创建对象和动作。
- 本包引入了对象动作的概念,它将任何对象 (\App\Object{object}) 相关的业务逻辑分离到专用动作 (\App\Objects{object}\Actions{action}) 类中。
- 动作可以使用参数数量作为区分动作类型或子动作的手段。
- 每个动作都扩展了一个抽象类 (Action),并需要在该类上实现一个公共的 take 方法。
如何使用动作
- 有两种方式来初始化/使用动作
- 可以直接通过实例化动作类并调用其 take 方法来调用动作
$action = new ActionName;
$response = $action->take($args);
- 或使用基类,动作可以通过以下语法启动
$response = Action::ObjectNameActionName($args);
这既可以看作是语法糖,也可以减少代码行数,因为它可以节省您导入所有动作类的麻烦。您只需要导入基动作类。
命名空间
默认情况下,所有对象都放在 \App\Objects 中,动作放在特定对象的动作目录中。这也可以在 owa 配置文件中配置
- app
- 对象
- 示例对象
- 动作
- ExampleAction.php
- 动作
- 示例对象
- 对象
命名法/约定
为了保持一致性,主要遵循特定的命名约定,特别是路由(可选)和动作名称。
-
每个动作都按照动作名称后跟后缀 Action 的格式命名。
- 示例:对于搜索动作,动作类将被命名为 SearchAction.php。
-
路由定义约定是可选的,但可以按照对象和特定动作的路由来遵循,格式为 base_url/object/action。
- 示例:如果我们正在搜索商店,我们可能会在 Store 对象中有一个名为 SearchAction 的动作。根据上述约定,该路由将是 base_url/store/search。
-
如果路由是活动记录路由或单个动作,则可以遵循相同的对象/动作约定,用于活动记录特定子动作
- 示例:如果我们有一个商店,我们想在商店内搜索商品,并且我们在 Item 对象中有一个 SearchAction,那么该路由将被定义为 base_url/store/{store_reference}/item/search。
-
路由约定是为了便于发现源文件,完全是可选的。
[*] 单个动作是在 URL 中传递标识符而不是动作名称的动作。例如,对于特定的商店,我们可能有一个端点如 base_url/store/{store_reference}。