PSR建议,方法名必须在camelCase中声明,类名必须在StudlyCaps中声明.
寻找以下三元语句的语法符合PSR-2(如果有) - 我还需要指向文档或某些权限链接:
$error = ($error_status) ? 'Error' : 'No Error';
要么
$error = $error_status ? 'Error' : 'No Error';
注意: php.net它显示括号的语法,但我无法在任何'官方PSR-2'文档中找到它.
如果没有PSR-2标准,哪种方式是最常见的惯例?
最近我正在努力适应PSR标准.在PSR-1文件中声明:
文件应该声明符号(类,函数,常量等)或引起副作用(例如生成输出,更改.ini设置等),但不应该同时执行这两种操作.
这是否意味着echo '<b>some bold text</b>';在类中的函数中写输出(比如说)是我不应该做的?
我有一个 Laravel 应用程序(用 composer 创建),我试图确保它符合 PHP 编码标准(级别 PSR-1)。我跑:
$ phpcs --standard=PSR1 my_app/
Run Code Online (Sandbox Code Playgroud)
并在几秒钟内返回一个新的、空的、随时可用的命令行:
$
Run Code Online (Sandbox Code Playgroud)
这是否意味着我的代码符合 PSR-1 中的所有要求和标准?它只做同样的事情:
$ phpcs my_app/
$ phpcs --standard=PEAR my_app/
$ phpcs --standard=PSR1 --report=summary lauras_app/
Run Code Online (Sandbox Code Playgroud)
我只想确保如果命令什么都不返回,那意味着我的代码是标准的。谢谢!
据我了解,根据 PSR-2 标准,我们应该将包含类的目录名称大写。但是如果该目录还包含一些其他文件,例如样式和脚本怎么办?
假设我有一个插件目录,每个插件都可以包含模板和其他内容:
plugins
PluginName // lowercase?
PluginName.php // Contains base class "PluginName"
templates
home.tpl
css
css.css
js
js.js
PluginName2
....
Run Code Online (Sandbox Code Playgroud)
这个结构正确吗?
一个文件应该声明新的符号(类、函数、常量等)并且不会引起其他副作用,或者它应该执行带有副作用的逻辑,但不应该两者都做。
考虑一个 config.php 文件中的这个例子(我自己的):
/**
* Parsing the database URL.
* DATABASE_URL is in the form:
* postgres://user:password@hostname:port/database
* e.g.:
* postgres://u123:pabc@ec2.eu-west-1.compute.amazonaws.com:5432/dxyz
*/
$url = parse_url(getenv('DATABASE_URL'));
define('DB_HOST', $url['host']);
define('DB_NAME', substr($url['path'], 1)); // get rid of initial slash
define('DB_USER', $url['user']);
define('DB_PASSWORD', $url['pass']);
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我实际上没有尊重建议。phpcs理所当然地会抱怨它,因为变量:
FILE: config.php
-----------------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
-----------------------------------------------------------------------------------------------------------------
1 | WARNING | A file should declare new symbols (classes, functions, constants, etc.) and cause no other side …Run Code Online (Sandbox Code Playgroud) 任何人都可以建议PSR标准文件中的哪些文件表明类成员变量中的变量类型后应该没有任何内容?
我通过执行以下操作使用了PHP CodeStyle Fixer:php-cs-fixer fix MyConsoleCommand.php
...它从docblock中删除了变量.我已经做了一段时间了,我相信这是正确的,符合标准的.
谁能确认一下?
/**
- * @var SiteManager $siteManager
+ * @var SiteManager
*/
private $siteManager;
/**
- * @var Registry $doctrine
+ * @var Registry
*/
private $doctrine;
Run Code Online (Sandbox Code Playgroud) 我正在使我的代码库符合 PSR-2(因此符合 PSR-1)并且我遇到了以下代码:
public function init()
{
parent::init();
// Allow A Larger PHP Memory Limit For This Script
ini_set("memory_limit", "512M");
// Allow A Larger Script Execution Limit For This Script
ini_set('max_execution_time', 300);
}
Run Code Online (Sandbox Code Playgroud)
这用于增加此特定脚本(只能由站点管理员访问并且不经常运行)能够消耗的内存量和执行时间。
在 php.ini 中设置默认值memory_limit和max_execution_time(所有标准脚本/文件都会遵守),然后在需要时增加这些限制,对我来说当然感觉是一个完全可以接受和合乎逻辑的实现。
但是,我记得 PSR-1 声明:
“文件应该声明符号(类、函数、常量等)或引起副作用(例如生成输出、更改 .ini 设置等),但不应同时进行。”
然后继续说明 usingini_set()是副作用的一个例子(至少他们的例子表明它在类或函数的范围之外使用):
<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
Run Code Online (Sandbox Code Playgroud)
可以在此处查看此文档
因此,我的问题是:
这个特定的脚本需要有更多的内存使用和执行时间,但我不想只为此增加全局 php.ini 设置,因为这将允许所有其他 PHP 进程使用更多的内存和执行时间。
接下来是另一个问题。
在《PSR-1指南》中,第2.3节“副作用”规则限制include了在同一文件中使用和声明函数,例如:
<?php
// side effect: loads a file
include "file.php";
// declaration
function foo()
{
// function body
}
Run Code Online (Sandbox Code Playgroud)
但是您可以include在函数内添加文件吗?
例如
<?php
// declaration
function foo()
{
// side effect: loads a file
include "file.php";
}
Run Code Online (Sandbox Code Playgroud)