赵亚博 / wp-namespace-autoloader
一个遵循WordPress编码标准2.0并建议3.0的类/接口/特质名称和文件名的PHP自动加载类
Requires
- php: >=5.4
Requires (Dev)
- cweagans/composer-patches: ^1.0
- dealerdirect/phpcodesniffer-composer-installer: 0.7.0
- phpunit/phpunit: ^7
- squizlabs/php_codesniffer: dev-master
- wp-coding-standards/wpcs: ^2.3
This package is auto-updated.
Last update: 2024-08-30 01:20:50 UTC
README
一个遵循WordPress编码标准2.0并应用PSR-4规范,可选地支持建议的3.0的PHP自动加载类
描述
命名空间和自动加载器很酷,有助于组织你的代码。有了这些功能,你再也不用担心手动包含和引入PHP文件了,你的代码会按文件夹组织。
这是一个遵循PSR-4自动加载实现,遵循WordPress命名规范2.0和提出的WordPress命名规范3.0
这意味着我正在做这些事情
- 将类文件名转换为小写
- 将类文件名中的下划线替换为连字符
- 在最终类名前添加'class-'
- (可选):在最终接口名前添加'interface-'
- (可选):在最终特质名前添加'trait-'
注意
- 所需的PHP版本是PHP 5.4
安装
你只需像要求一个composer默认依赖项一样要求它。你可能需要使用preferred-install
作为dist
,这样你就可以将文件作为.git文件提交,因为不会创建.git文件
"require": { "pablo-sg-pacheco/wp-namespace-autoloader": "dev-master" }, "config": { "preferred-install": "dist" }
用法
首先,像你习惯的那样加载composer依赖项
<?php require __DIR__ . '/vendor/autoload.php';
现在,你需要初始化它,然后你就可以开始了
<?php use Pablo_Pacheco\WP_Namespace_Autoloader\WP_Namespace_Autoloader; $autoloader = new WP_Namespace_Autoloader( array( 'directory' => __DIR__, // Directory of your project. It can be your theme or plugin. Defaults to __DIR__ (probably your best bet). 'namespace_prefix' => 'My_Project', // Main namespace of your project. E.g My_Project\Admin\Tests should be My_Project. Defaults to the namespace of the instantiating file. 'classes_dir' => 'src', // (optional). It is where your namespaced classes are located inside your project. If your classes are in the root level, leave this empty. If they are located on 'src' folder, write 'src' here 'prepend_class' => true, // (optional). Default true, prepends class- before the final class name 'prepend_interface' => true, // (optional). Default false, prepends interface- before the final interface name 'prepend_trait' => true, // (optional). Default false, prepends trait- before the final trait name ) ); $autoloader->init();
现在是最酷的部分!如果你有一个简单的类位于your_projct_root_folder\Admin_Pages\class-main-page.php,如下所示,你可以实例化它,它将正常工作
<?php namespace My_Project\Admin_Pages; class Main_Page{ }
或者如果你有一个简单的接口位于your_projct_root_folder\Admin_Pages\interface-init.php
<?php namespace My_Project\Admin_Pages; interface Init { }
并且你有一个实现该接口的简单类位于your_projct_root_folder\Admin_Pages\class-main-page.php,你可以实例化它,它将正常工作
<?php namespace My_Project\Admin_Pages; class Main_Page implements Init { }
或者如果你有一个简单的特质位于your_projct_root_folder\Admin_Pages\trait-my-trait.php
<?php namespace My_Project\Admin_Pages; trait My_Trait { }
并且你有一个使用该特质的简单类位于your_projct_root_folder\Admin_Pages\class-main-page.php,你可以实例化它,它将正常工作
<?php namespace My_Project\Admin_Pages; class Main_Page { use My_Trait }
参数
这个类有参数,使其足够灵活,以适应任何类型的项目。
示例
- 使用
lowercase => array('file','folders')
将所有文件夹转换为小写 - 使用
underscore_to_hyphen => array('file','folders')
也将文件夹中的下划线转换为连字符 - 使用
prepend_class => false
不将类名添加到文件前