您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

新标题:明显的PSR!

2025/10/19 14:04:44发布20次查看
在 nettuts+ 的上一课中,您了解了 psr;但是,该文章没有详细说明将该编码风格集成到项目中的过程。让我们解决这个问题!
注意:本文假设您已阅读 psr-huh?,并了解 psr 指的是什么。让我们从第一个标准开始:psr-0。
psr-0 - 自动加载标准phpcs 插件是我用过的最有用的工具。
过去,我们通过以下两种方式之一包含 php 文件:
在每个文件的顶部使用大量包含语句。列出单个文件中的所有包含内容,并将该单个文件包含在您的项目中。这两种方法各有利弊,但是,我认为我们都同意这两种方法都不是最佳或现代的解决方案。 php5引入了根据类名自动加载文件的概念;因此,psr-0 旨在保持文件名一致。
命名空间与文件名或自动加载无关;从技术上讲,您可以在同一文件中声明不同的名称空间。例如,下面的代码是完全有效的。
<?phpnamespace nettuts;class hello{ public function __construct() { echo nettuts+; }}namespace gabriel;class hello{ public function __construct() { echo gabriel; }}$h = new \nettuts\hello();$h = new \gabriel\hello();
这个文件中有两个 hello 类,但它们驻留在不同的命名空间中。此代码的最后两行在各自的命名空间上实例化 hello() 类。第一个输出“nettuts+”,而第二个输出“gabriel”。命名空间允许您区分具有相同名称的两个类,就像您可能习惯于桌面上的文件夹一样。 psr-0 标准简单地利用了命名空间的优势,使自动加载类变得容易。通过一致地命名文件,您可以创建一个自动查找必要文件的函数。
要符合 psr-1 标准,您还必须遵循 psr-0。
请务必阅读完整的标准,但总结一下:
每个类都必须以项目(或创建者)的名称命名。类名称中的下划线应转换为目录分隔符。文件必须具有 .php 扩展名。例如,类引用:
\nettuts\database\sql_postgres
如果遵循 psr-0,应转换为此路径:
./nettuts/database/sql/postgres.php
我们如何实现此功能?最明显的解决方案是使用 composer,它附带了符合 psr-0 标准的自动加载器。如果您在项目中使用 composer(您应该这样做),那么请选择它的自动加载器,而不是编写自己的自动加载器。
符合 psr-0 的加载程序允许您指定基本路径,通知加载程序首先查看哪个目录。首先,创建一个简单的 composer.json 文件,其中包含以下 json:
{ autoload: { psr-0: { nettuts: ./, gmanricks: vendor/ } }}
这个 json 文件告诉 composer 我们要使用 psr-0 标准自动加载所有以当前目录(根文件夹)为基本路径的 nettuts 命名空间文件。我们还希望使用 gmanricks 命名空间自动加载相对于 vendor 文件夹的所有类(例如 ./vendor/gmanricks/classname)。
现在,输入“composer install”以生成自动加载类,或在后续编辑中输入“composer dump-autoload”以重新生成自动加载类。另外,不要忘记在项目早期的某个地方需要自动加载器。
<?phprequire 'vendor/autoload.php';
composer 是您的最佳选择,但在某些情况下您可能需要一个小型、简单的自动加载器。 php-fig 提供了一个可供您使用的示例自动加载器:
function __autoload($classname){ $classname = ltrim($classname, '\\'); $filename = ''; $namespace = ''; if ($lastnspos = strrpos($classname, '\\')) { $namespace = substr($classname, 0, $lastnspos); $classname = substr($classname, $lastnspos + 1); $filename = str_replace('\\', directory_separator, $namespace) . directory_separator; } $filename .= str_replace('_', directory_separator, $classname) . '.php'; require $filename;}
需要注意的是,此加载器尝试加载当前目录中使用 psr 标准的所有类。
现在我们已经成功地自动加载类了,让我们继续讨论下一个标准:基本编码标准。
psr-1 - 基本编码标准psr-1 定义了通用编码指南,可以分为两部分。
命名约定命名空间允许您区分具有相同名称的两个类。
与任何编程语言一样,遵循命名约定最终会使您的代码更易于阅读和维护。以下是一些需要遵循的规则:
类名称使用pascalcase。方法名称应采用驼峰命名法。常量要求全部大写字母,并用下划线分隔每个单词(例如 constant_variable)。代码约定:它不仅仅是命名约定;还请遵循以下准则:
仅在代码中使用 “php 代码嗅探器”>“设置 - 用户”。
插件需要知道三个依赖项所在的位置,以及我们希望代码遵守的标准:
{ phpcs_additional_args: { --standard: psr2, -n: }, phpcs_executable_path: dependency_path/vendor/bin/phpcs, phpmd_executable_path: dependency_path/vendor/bin/phpmd, php_cs_fixer_executable_path: dependency_path/vendor/bin/php-cs-fixer}
这些设置告知 phpcs 我们希望遵守 psr2 标准并提供每个依赖项的路径。不要忘记将 dependency_path 替换为您的实际路径。
重新启动 sublime,代码嗅探器将在您保存 php 文件时扫描您的代码。
在编辑器中右键单击还将列出几个新选项,例如清除错误标记和尝试修复非标准问题。但是,考虑到本文的目的是让您习惯该标准,我建议手动修复您的代码并避免使用自动修复程序功能。
结论创建 psr 标准是为了使代码可以轻松地在项目之间重用,而无需牺牲代码风格的一致性。虽然一开始可能会感到不知所措,但您可以使用本文中的想法和工具来帮助您完成过渡。
最后重申一次:没有人强迫您改变 php 编码的方式。它只是一个指南,最初是为了框架互操作性。也就是说,在 nettuts+,我们认为这是值得遵循的最佳实践。现在你自己拿主意吧!如果您有任何疑问,请在下面听听!
以上就是新标题:明显的psr!的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product