问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php面向对象编程书写代码规范

发布网友 发布时间:2022-04-24 09:11

我来回答

2个回答

懂视网 时间:2022-04-07 09:47

不添加不需要的上下文

如果你的类名或对象名称有具体的含义,请不要重复该变量的名称。

差:

<?php class Car{
 public $carMake;
 public $carModel;
 public $carColor;
 //...
 }

好:

<?php class Car{
 public $make;
 public $model;
 public $color;
 //...
 }

函数参数数量(理想情况是 2 个以下)

限制函数参数的数量是非常重要的,因为它让函数更容易测试,参数超过三个的话,你必须用每个单独的参数测试大量不同的情况。

无参数是理想的情况。一个或两个参数是可以的,但应该避免三个。通常,如果你有两个以上的参数,那么你的函数试图完成太多的功能,若不是,大多数时候,较高级的对象就足以作为参数(译者注:比如数组、对象)。

差:

<?php function createMenu($title, $body, $buttonText, $cancellable) {
 // ...}

好:

<?php class MenuConfig {
 public $title;
 public $body;
 public $buttonText;
 public $cancellable = false;}$config = new MenuConfig();$config->title = 'Foo';$config->body = 'Bar';$config->buttonText = 'Baz';$config->cancellable = true;function createMenu(MenuConfig $config) {
 // ...}

一个函数应该只完成一件事

这是软件工程中最重要的规则。当函数做的事多于一件事情时,他们更难编写和测试。 当你可以将函数隔离成一个动作时,可以轻松重构,代码也将更易读。

差:

<?phpfunction emailClients($clients) {
 foreach ($clients as $client) {
 $clientRecord = $db->find($client);
 if ($clientRecord->isActive()) {
  email($client);
 }
 }}

好:

function emailClients($clients) {
 $activeClients = activeClients($clients);
 array_walk($activeClients, 'email');
}
function activeClients($clients) {
 return array_filter($clients, 'isClientActive');
}
function isClientActive($client) {
 $clientRecord = $db->find($client);
 return $clientRecord->isActive();
}

使用 get 和 set 方法

在 PHP 中,可以为方法设置 public、protected 和 private 关键字,可以控制对象上的属性可见性。这是面向对象的设计原则中的开放/封闭原则的一部分。

差:

class BankAccount
{
 public $balance = 1000;
}
$bankAccount = new BankAccount();
// Buy shoes...
$bankAccount->balance -= 100;

好:

class BankAccount
{
 private $balance;
 public function __construct($balance = 1000)
 {
 $this->balance = $balance;
 }
 public function withdrawBalance($amount)
 {
 if ($amount > $this->balance) {
  throw new Exception('Amount greater than available balance.');
 }
 $this->balance -= $amount;
 }
 public function depositBalance($amount)
 {
 $this->balance += $amount;
 }
 public function getBalance()
 {
 return $this->balance;
 }
}
$bankAccount = new BankAccount();
// Buy shoes...
$bankAccount->withdrawBalance($shoesPrice);
// Get balance
$balance = $bankAccount->getBalance();

推荐教程:《PHP教程》

热心网友 时间:2022-04-07 06:55

类命名
a) 使用大写字母作为词的分隔,其他的字母均使用小写,即驼峰格式。
b) 名字的首字母使用大写
c) 不要使用下划线(’_')
d) interface接口最好使用大写字母I,并以Interface结尾
例如:
class NameOneTwo
class Name
interface IExampleInterface ()
方法命名
a) 使用大写字母作为词的分隔,其他的字母均使用小写
b) 名字的首字母使用大写,声明为 “private” 或 “protected” 的,使用’_’为前缀
c) 不要使用下划线(’_')
d) (与类命名一致的规则)
e) 对象的访问器总是以 “get” 或 “set” 为前缀,当使用设计模式如 单态模式(singleton)
类属性命名
a) 属性名前缀应以属性值类型指定(具体参照变量命名规则)
b) 前缀后采用与类命名一致的规则
c) 私有属性采用’_’为前缀
例如:
class NameOneTwo {
public function VarAbc() {};
public function ErrorNumber() {};
public $iAge;
private $_iAge;
}
全局变量
a) 全局变量应该带前缀‘g’
b) 其余参照变量命名规则
例如:
global $gi_Age;
global $ga_Price
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
填地方专项志愿会影响本科二批录取吗? 地方专项计划成绩不好的可以报吗 国家专项地方专项影响本科填报吗 地方专项计划滑档影响本科录取吗 报地方专项计划会影响高考录取吗 地方专项计划影响后续录取吗 电脑最高配组装机配置组装电脑什么配置比较好 台式组装游戏电脑配置组装电脑什么配置比较好 打游戏主机电脑配置台式电脑主要是玩游戏什么配置最合适 组装高配置台式电脑组装电脑什么配置比较好 如何理解PHP面向对象程序设计 php面向对象基础问题,求解,小弟先谢谢了 请教PHP面向对象编程 请教如何正确使用面向对象的编写方式编写PHP? 基础编程 php中面向对象编程是什么意思,到底用在什么地方,用一个项目中的实际例子... 什么是php面向对象的编程 PHP面向对象的学习!!!迷惑中!~~~希望大家可以多多指点~ 什么是php的面向对象编程 能讲讲PHP面向对象的编程吗 车窗起雾正确快速除雾用什么办法最好呢 给车窗除雾都有哪些实用性的方法呢? 汽车挡风玻璃防雾除雾剂怎么使用效果更佳? 车窗除雾应该怎么操作? 汽车除雾的正确方法 编辑小程序需要什么软件? 有没有写文章可以赚钱的软件或者小程序? 车窗快速除雾的方法 怎么使用汽车除雾器? 汽车除雾剂使用方法 请问开发小程序的软件,用【商城开发助手】小程序可以么? 怎么煮奶瓶消毒玻璃的 如何补衣服上的大洞? 大家是如何理解PHP编程中的“面向对象”呢? 墙上打的大洞怎么修补 php怎么面向对象开发 棉布破大洞怎么修复 php面向对象编程问题 天花板破了两个大洞,怎么修补 怎样学PHP面向对象编程? 墙面上有个超大洞怎么办? php面向对象一个基础问题- - 新奶瓶怎么煮沸消毒 树坏了大洞用什么补,我家有棵石榴树中间坏了个大洞用什么材料。 刚买的奶瓶应该怎么煮才能消毒 编程php学到什么基础可以入手框架?会面向对象cms可以入手吗?学框架前需要打哪些基础? PHP进阶:面向对象及TP5框架初识 被套破了一个大洞怎么办 学习PHP面向对象编程开发分为那几个阶段,从基础开始以此举例,比如说初 ... 怎么补衣服大洞 墙面开的墙和洞怎么修补以及用什么工具