成功的php标准是什么+如何保证PHP成功?

成功的php标准是什么+如何保证PHP成功?,第1张

成功的 PHP 项目标准往往与以激薯下几个方面有关:

功能实现:PHP 项目要能够实现其预期的功能,而且需要保证功能的稳定性、可靠性和性能等方面的表现。

代码质量:PHP 项目需要遵循良好的编码规范和设计模式,代码要易于维护和扩展,避免出现过多的重复代码和不必要的复杂性。

安全性:PHP 项目需要保证数据的安全性和防止恶意攻击,包括对输入的数据进行过滤和验证,对敏感数据进行加密和解密等等。

用户体验:PHP 项目需要提供良好的用户体验,包括界面的友好性、交互的流畅性、响应速度等等。

要保证 PHP 项目的成功,可以采取以下几种方式:

设定明确的目标和计划:在开始开发之前,需要明确项目的目标、预期成果和实现明毁者计划等,以确保余宴项目的顺利进行。

遵循良好的开发流程:采用合适的开发流程,包括需求分析、设计、开发、测试和上线等,可以保证项目按照规划顺利进行。

坚持代码质量和安全性:在开发过程中,需要遵循良好的编码规范和设计模式,保证代码质量和安全性,并进行必要的测试和漏洞修复。

注重用户体验:在设计和开发过程中,需要注重用户体验,采用合适的界面设计和交互方式,提高用户的满意度和使用体验。

持续优化和改进:项目完成后需要对其进行持续的优化和改进,以提高功能和性能,加强安全性和用户体验,保持项目的长期稳定和发展。

转自:http://www.nginx.cn/2677.html

FIG组织在制定跟PHP相关规范,简称PSR,PSR旨在通过讨论我们代码项目的共同点以找出一个协作编程的方法。

什么是psr0强调自动加载的方式

下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范:

规范

一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\*

每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。

每个命名空间(namespace)中可以根据需要使用任意数量的子租野命名空清弊间(sub-namespace)。

从文件系统中加载源文件时,空间名(namespace)中的分隔符将被转换为 DIRECTORY_SEPARATOR。

类名(class name)中的每个下划线_都将被转换为一个DIRECTORY_SEPARATOR。下划线_在空间名(namespace)中没有什么特殊的意义。

完全标准的命名空间(namespace)和类(class)从文件系统加载源文件时将会加上.php后缀。

组织名答型族(vendor name),空间名(namespace),类名(class name)都由大小写字母组合而成。

示例

\Doctrine\Common\IsolatedClassLoader =>/path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php

\Symfony\Core\Request =>/path/to/project/lib/vendor/Symfony/Core/Request.php

\Zend\Acl =>/path/to/project/lib/vendor/Zend/Acl.php

\Zend\Mail\Message =>/path/to/project/lib/vendor/Zend/Mail/Message.php

空间名(namespace)和类名(class name)中的下划线

\namespace\package\Class_Name =>/path/to/project/lib/vendor/namespace/package/Class/Name.php

\namespace\package_name\Class_Name =>/path/to/project/lib/vendor/namespace/package_name/Class/Name.php

以上是我们为实现通用的自动加载而制定的最低标准。你可以利用能够自动加载PHP 5.3类的SplClassLoader来测试你的代码是否符合这些标准。

实例

下面是一个怎样利用上述标准来实现自动加载的示例函数。

<?php

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

}

SplClassLoader实现

下面的gist是一个按照上面建议的标准来自动加载类的SplClassLoader实例。这是依据这些标准来加载PHP 5.3类的推荐方案。

什么是psr1,定义基本代码规范

本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础。

RFC 2119中的必须(MUST),不可(MUST NOT),建议(SHOULD),不建议(SHOULD NOT),可以/可能(MAY)等关键词将在本节用来做一些解释性的描述。

1. 概述

源文件必须只使用 和 这两种标签。

源文件中php代码的编码格式必须只使用不带字节顺序标记(BOM)的UTF-8。

一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)或者只用来做一些引起副作用的 *** 作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。

命名空间(namespace)和类(class) 必须遵守PSR-0标准。

类名(class name) 必须使用骆驼式(StudlyCaps)写法 (译者注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。

类(class)中的常量必须只由大写字母和下划线(_)组成。

方法名(method name) 必须使用驼峰式(cameCase)写法(译者注:后文将直接用camelCase表示)。

2. 文件

2.1. PHP标签

PHP代码必须只使用长标签()或者短输出式标签(<?= ?>);而不可使用其他标签。

2.2. 字符编码

PHP代码的编码格式必须只使用不带字节顺序标记(BOM)的UTF-8。

2.3. 副作用

一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)或者只用来做一些引起副作用的 *** 作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。

短语副作用(side effects)的意思是 在包含文件时 所执行的逻辑与所声明的类(class),函数(function),常量(constant)等没有直接的关系。

副作用(side effects)包含但不局限于:产生输出,显式地使用require或include,连接外部服务,修改ini配置,触发错误或异常,修改全局或者静态变量,读取或修改文件等等

下面是一个既包含声明又有副作用的示例文件;即应避免的例子:

<?php

// 副作用:修改了ini配置

ini_set('error_reporting', E_ALL)

// 副作用:载入了文件

include "file.php"

// 副作用:产生了输出

echo "<html>\n"

// 声明

function foo()

{

// 函数体

}

下面是一个仅包含声明的示例文件;即应提倡的例子:

<?php

// 声明

function foo()

{

// 函数体

}

// 条件式声明不算做是副作用

if (! function_exists('bar')) {

function bar()

{

// 函数体

}

}

3. 空间名(namespace)和类名(class name)

命名空间(namespace)和类(class)必须遵守 PSR-0.

这意味着一个源文件中只能有一个类(class),并且每个类(class)至少要有一级空间名(namespace):即一个顶级的组织名(vendor name)。

类名(class name) 必须使用StudlyCaps写法。

PHP5.3之后的代码必须使用正式的命名空间(namespace) 例子:

<?php

// PHP 5.3 及之后:

namespace Vendor\Model

class Foo

{

}

PHP5.2.x之前的代码建议用伪命名空间Vendor_作为类名(class name)的前缀

<?php

// PHP 5.2.x 及之前:

class Vendor_Model_Foo

{

}

4. 类的常量、属性和方法

术语类(class)指所有的类(class),接口(interface)和特性(trait)

4.1. 常量

类常量必须只由大写字母和下划线(_)组成。 例子:

<?php

namespace Vendor\Model

class Foo

{

const VERSION = '1.0'

const DATE_APPROVED = '2012-06-01'

}

4.2. 属性

本指南中故意不对$StulyCaps,$camelCase或者$unser_score中的某一种风格作特别推荐,完全由读者依据个人喜好决定属性名的命名风格。

但是不管你如何定义属性名,建议在一个合理的范围内保持一致。这个范围可能是组织(vendor)级别的,包(package)级别的,类(class)级别的,或者方法(method)级别的。

4.3. 方法

方法名则必须使用camelCase()风格来声明。

什么是PSR2定义代码风格

代码风格指南

本手册是基础代码规范(PSR-1)的继承和扩展。

为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。

各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作时,本指南将会成为所有这些项目中共用的一组代码规范。 因此,本指南的益处不在于这些规则本身,而在于在所有项目中共用这些规则。

RFC 2119中的必须(MUST),不可(MUST NOT),建议(SHOULD),不建议(SHOULD NOT),可以/可能(MAY)等关键词将在本节用来做一些解释性的描述。

在你的源文件找到<meta http-equiv="content-type" content="text/htmlcharset=utf-8">charset= 后面接的就是编码,你全部改了就可以了。如果你改了之后变成乱码的话,那你就只能先建一个utf-8编码的网页,把相应的内容重新输入进去。

要输出UTF8格式时,加上以下语句:

header(”Content-Type: text/htmlcharset=UTF-8″)

php用UTF-8总结:

php文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题

php要输出头:header(”Content-Type: text/htmlcharset=UTF-8″源谨拦)

meta标签无所谓,有header所有浏览器就会按header来解析

所有外围都得用UTF8,包括数据库、×.js、×.css(CSS影响倒不大)

php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上的linux都装了,没装的话download、tar、make、make install,很简单的)

my.ini:

[MySQL(和PHP搭配之最佳组合)]

default-character-set=utf8

[MySQL(和PHP搭配之最佳组合)d]

default-character-set=utf8

default-storage-engine=MyISAM

在[MySQL(和PHP搭配之最佳组合)d]下加入晌森:

default-collation=utf8_bin

init_connect='SET NAMES utf8'

在需要做数据库 *** 作的php程序前面加上

mb_internal_encoding('utf-8')

create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin

phpMyAdmin/config.inc.php

$cfg['DefaultCharset'] = 'utf-8'

$cfg['RecodingEngine'] = 'iconv'

phpAdmin导出数据时

把"二进制区域使用雹胡十六进制显示"的勾去掉

特别郁闷的:文件系统函数不支持UTF-8!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12401600.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存