osmphp/core

在任意PHP项目中启用模块化软件开发


README

Build Status Total Downloads Latest Stable Version License

关于osmphp/core

osmphp/core使得在任意PHP项目中实现模块化软件开发成为可能——将应用程序代码划分为模块——可重用、可扩展且可插拔的部分。

模块是负责应用程序单个功能或概念的目录。例如,一个模块可以处理电子商务应用程序中的产品,另一个模块可以授权用户进入应用程序的受限区域,另一个模块可以使应用程序在命令行中运行,等等。

osmphp/core在几个方面与其他框架不同

  • 前所未有的可扩展性。从您的模块中,您可以添加新方法并修改任何其他模块类的现有(甚至受保护的)方法。
  • 较小的占用空间,更快的执行速度。类属性值仅在(并且如果)它们被访问时才计算,除非您显式地分配它们。
  • 简单的对象实例化。类知道并使用它们的默认依赖关系,您在创建对象时不需要传递它们。除非您想要这样做,例如,在单元测试中模拟依赖关系。这也完全消除了配置依赖注入容器的麻烦。
  • 自动装配。通过扩展某个类或将属性添加到类中,将您的类连接到应用程序。应用程序深知所有模块的类定义,并将它们连接起来,而无需额外的配置文件。

先决条件

此库需要

  • PHP 8
    • mbstring扩展
  • Composer

如果需要,请安装它们。

安装

安装osmphp/core Composer包

    composer require osmphp/core

入门指南

按照以下描述准备项目以使用库。将来,此包将预安装项目模板,您无需编写此样板代码。

  1. src/App.php文件中创建一个应用程序类(假设您的项目已配置为从src/目录自动加载App\命名空间;如果不是这种情况,相应地调整代码片段)

     <?php
     declare(strict_types=1);
     namespace App;
     use Osm\Core\App as BaseApp;
     
     class App extends BaseApp {
     }
    
  2. src/ModuleGroup.php中创建一个模块组类

     <?php
     
     declare(strict_types=1);
     namespace App;
     use Osm\Core\ModuleGroup as BaseModuleGroup;
     
     class ModuleGroup extends BaseModuleGroup {
     }
    
  3. 编译应用程序(在Windows中,使用\代替/

     php vendor/osmphp/core/bin/compile.php App\App
    
  4. 在您的入口文件public/index.php中(可能存在多个入口文件,将以下内容添加到每个文件中),确保代码在应用程序对象的上下文中执行

     <?php
     
     declare(strict_types=1);
     
     use Osm\Runtime\Apps;
     use App\App;
     
     ...
          
     Apps::$project_path = dirname(__DIR__);
     Apps::run(Apps::create(App::class), function() {
         ...
     });
    

使用库

文档是正在进行的工程。本节将在就绪后更新。

贡献

您的帮助非常受欢迎,无论是报告的bug、偶尔的pull request,还是完全的参与。要开始,请打开一个问题,并告诉我们您想成为其中的一员,我们将与之联系。

许可证

osmphp/core包是开源软件,根据GPL v3许可证授权。

商业许可证及支持

如果开源许可证不适合您,或者您需要支持,请通知我