molajo / resource
Molajo PHP应用程序资源服务
Requires
- php: >=5.3.3
This package is auto-updated.
Last update: 2024-09-08 04:28:34 UTC
README
======= Resource
Resource 为 PHP 应用程序提供了一种通用的方法,用于使用 URI 命名空间定位和处理文件和文件夹资源。
基本原理
使用 Resource,应用程序通过 URI 命名空间与文件系统资源进行交互,而不是指定文件和文件夹名称。
这种方法提供了两个重要优势
首先,命名空间泛化了位置信息,因此应用程序不再需要硬编码的物理位置。根据 URI 命名空间,Resource 包定位物理位置,从而在存储位置和功能方面具有灵活性。
其次,Resource 包使用适配器处理程序来处理应用程序对资源的请求。在这方面,每个文件请求所需的处理可以基于 URI 方案进行自定义。例如,PHP 类的处理程序可以定义为 SPL 自动加载器,而 XML 配置文件的处理程序可能返回从定位的文件中读取的 XML 字符串。在模型的情况下,可能会返回一个 Read 控制器,该控制器具有所有依赖项注入并准备进行查询。对图像文件的请求可能会返回一个调整大小后的图像。可能性是无限的。
如何使用 Molajo 的 Resource 的一些示例
类处理程序
Resource 类处理程序定义为 SPL 自动加载器
。PHP 将所有用于定位类文件的请求传递给此方法,该方法尝试定位文件并在找到的情况下包含它。
XML 处理程序
Resource XML 处理程序定位并返回指定资源的路径
<?php
$field = $this->resource->get('xml://Molajo/Field/Author.xml');
echo $field;
结果
<field name="author" type="string" null="0" default=" "/>
查询处理程序
Resource 查询处理程序定位模型 XML 文件,处理扩展和包含语句,生成完整的模型定义,实例化所需的模型类,注入所需依赖项,将模型实例和其他所需依赖项注入必要的控制器,然后将控制器实例传递回应用程序进行处理。
<?php
$controller = $this->dependencies['Resource']->get(
'query://Molajo/Datasource/CatalogTypes.xml',
array('Parameters' => $parameters)
);
$catalog_types = $controller->getData();
foreach ($catalog_types as $item) {
echo $item->id; // you get the picture
}
其他处理程序
在 Molajo 中使用的 Resource 包具有主题、视图、JS、CSS、文件和文件夹等的 URI 处理程序。正在进行其他使用类型(如常量、函数和接口)的工作。虽然 Resource 仍在开发中,但它仍然是 Molajo 应用程序的一个基本组成部分。
##资源定义##
第一步是确定哪些资源必须可供您的应用程序访问。定义方案和请求结构。典型的资源应用包括:类、配置文件、CSS、JS、图像等。资源包为这些典型用例提供了处理程序。
必须定义所有 方案 并为每个方案创建处理程序
"css": { "Name": "css", "RequireFileExtensions": ".css", "Handler": "Css" },
接下来,将所有应用程序资源映射到命名空间前缀和该命名空间的包含和排除标准
"Molajo\\Administration": { "include_folders": [ "Application\/Administration\/" ], "extension_level": 3, "exclude_folders": [ ".dev", ".travis.yml", ".DS_Store", ".git", ".", "..", ".gitattributes", ".gitignore" ], "include_file_extensions": "", "exclude_file_extensions": "", "include_file_names": "", "exclude_file_names": "", "tags": [] },
如果需要覆盖,定义一个通用的 优先级 方法来选择所需的文件
"User", "Tag", "Group", "Category", "Theme", "Plugin", "Menuitem", "Resource", "Wrap", "Template", "Page", "Application", "Site", "Sites", "System" ]
根据这些信息,可以根据需要编译 资源映射 以提高性能,尽管支持 100% 动态资源定位。
此过程还会创建由 Molajo 的 IoCC 包 使用的编译数据,用于 [识别具体类依赖] (https://github.com/Molajo/Resource/blob/master/Files/Output/ClassDependencies.json) 以及用于 将具体类映射到接口。
### 资源服务 IoCC
以下是如何实例化 Molajo 的 Resource 类和处理器的示例
- 在启动时,资源工厂方法 实例化基本处理器,然后将这些实例注入到构建的适配器中。
- 在某些情况下,在依赖项可用之前无法构造 URI 处理器。例如,数据库连接后,可以构造查询处理器并将其注入到资源处理器中。当数据库连接可用时,资源查询 DI 注入器 就会这样做。
这只是一个关于 Resource 包的一般描述,欢迎提供反馈。请记住
它仍在开发中,尚未准备好投入生产使用。