Bài giảng Phát triển phần mềm nguồn mở - Bài 3: PHP Standards recommendations - Nguyễn Hữu Thể

PSR-2: Coding Style Guide  Code MUST use 4 spaces for indenting, not tabs.  There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.  There MUST be one blank line after the namespace declaration, and there MUST be one blank line after the block of use declarations.  Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.  Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body.

pdf17 trang | Chia sẻ: thanhle95 | Lượt xem: 530 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng Phát triển phần mềm nguồn mở - Bài 3: PHP Standards recommendations - Nguyễn Hữu Thể, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
PHP Standards Recommendations Nguyễn Hữu Thể PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ Content  Basic Coding Standard  Coding Style Guide  Logger Interface  Autoloading Standard  Caching Interface  HTTP Message Interface 2 Index by Status (Accepted) 3 Num Title Editor Coordinator Sponsor 1 Basic Coding Standard Paul M. Jones N/A N/A 2 Coding Style Guide Paul M. Jones N/A N/A 3 Logger Interface Jordi Boggiano N/A N/A 4 Autoloading Standard Paul M. Jones Phil Sturgeon Larry Garfield 6 Caching Interface Larry Garfield Paul Dragoonis Robert Hafner 7 HTTP Message Interface Matthew Weier O'Phinney Beau Simensen Paul M. Jones 13 Hypermedia Links Larry Garfield Matthew Weier O'Phinney Marc Alexander PSR-1: Basic Coding Standard 1. Overview  Files MUST use only <?php and <?= tags.  Files MUST use only UTF-8 without BOM for PHP code.  Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.  Namespaces and classes MUST follow an "autoloading" PSR: [PSR-0, PSR-4].  Class names MUST be declared in StudlyCaps.  Class constants MUST be declared in all upper case with underscore separators.  Method names MUST be declared in camelCase. 4 PSR-1: Basic Coding Standard 5 <?php // side effect: change ini settings ini_set('error_reporting', E_ALL); // side effect: loads a file include "file.php"; // side effect: generates output echo "\n"; // declaration function foo() { // function body } <?php // declaration function foo() { // function body } // conditional declaration is *not* a side effect if (! function_exists('bar')) { function bar() { // function body } } SHOULD NOT SHOULD PSR-1: Basic Coding Standard Namespace and Class Names  Namespaces and classes MUST follow an "autoloading" PSR: [PSR-0, PSR-4].  Class names MUST be declared in StudlyCaps. 6 // PHP 5.3 and later: namespace Vendor\Model; class Foo { } PSR-1: Basic Coding Standard Class Constants, Properties, and Methods  The term "class" refers to all classes, interfaces, and traits.  Class constants MUST be declared in all upper case with underscore separators. 7 namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; } PSR-1: Basic Coding Standard  Properties • This guide intentionally avoids any recommendation regarding the use of $StudlyCaps, $camelCase, or $under_score property names.  Methods • Method names MUST be declared in camelCase(). 8 PSR-2: Coding Style Guide  Code MUST use 4 spaces for indenting, not tabs.  There MUST NOT be a hard limit on line length; the soft limit MUST be 120 characters; lines SHOULD be 80 characters or less.  There MUST be one blank line after the namespace declaration, and there MUST be one blank line after the block of use declarations.  Opening braces for classes MUST go on the next line, and closing braces MUST go on the next line after the body.  Opening braces for methods MUST go on the next line, and closing braces MUST go on the next line after the body. 9 PSR-2: Coding Style Guide  Control structure keywords MUST have one space after them; method and function calls MUST NOT.  Opening braces for control structures MUST go on the same line, and closing braces MUST go on the next line after the body.  Opening parentheses for control structures MUST NOT have a space after them, and closing parentheses for control structures MUST NOT have a space before. 10 namespace Vendor\Package; use FooInterface; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; class Foo extends Bar implements FooInterface { public function sampleMethod($a, $b = null) { if ($a === $b) { bar(); } elseif ($a > $b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); } } final public static function bar() { // method body } } PSR-3: Logger Interface  The LoggerInterface exposes eight methods to write logs to the eight RFC 5424 levels (debug, info, notice, warning, error, critical, alert, emergency).  A ninth method, log, accepts a log level as the first argument. Calling this method with one of the log level constants MUST have the same result as calling the level-specific method.  Users SHOULD NOT use a custom level without knowing for sure the current implementation supports it. 12 PSR-4: Autoloader  The term "class" refers to classes, interfaces, traits, and other similar structures.  A fully qualified class name has the following form: \(\)*\  The fully qualified class name MUST have a top-level namespace name, also known as a "vendor namespace".  The fully qualified class name MAY have one or more sub- namespace names.  The fully qualified class name MUST have a terminating class name. 13 PSR-4: Autoloader  Underscores have no special meaning in any portion of the fully qualified class name.  Alphabetic characters in the fully qualified class name MAY be any combination of lower case and upper case.  All class names MUST be referenced in a case-sensitive fashion.  When loading a file that corresponds to a fully qualified class name ... 14 PSR-4: Autoloader  The contiguous sub-namespace names after the "namespace prefix" correspond to a subdirectory within a "base directory", in which the namespace separators represent directory separators. The subdirectory name MUST match the case of the sub-namespace names.  The terminating class name corresponds to a file name ending in .php. The file name MUST match the case of the terminating class name.  Autoloader implementations MUST NOT throw exceptions, MUST NOT raise errors of any level, and SHOULD NOT return a value. 15 PSR-6: # Introduction  The goal of this PSR is to allow developers to create cache-aware libraries that can be integrated into existing frameworks and systems without the need for custom development. 16 PSR-7: HTTP message interfaces  This document describes common interfaces for representing HTTP messages as described in : • RFC 7230 • RFC 7231, • URIs for use with HTTP messages as described in RFC 3986.  HTTP messages are the foundation of web development. • Web browsers and HTTP clients such as cURL create HTTP request messages that are sent to a web server, which provides an HTTP response message. • Server-side code receives an HTTP request message, and returns an HTTP response message. 17