类中PHP公共函数的顺序是否会影响其执行?
我一直在学习这个教程。在某些部分,它只是告诉我在类中PHP公共函数的顺序是否会影响其执行?,php,class,function,public,Php,Class,Function,Public,我一直在学习这个教程。在某些部分,它只是告诉我在类中添加公共函数,但没有说明我应该在类的开头还是结尾添加它 例如: /** * JobeetCategory * * This class has been auto-generated by the Doctrine ORM Framework * * @package jobeet * @subpackage model * @author Your name here * @version SVN: $Id
类中添加公共函数
,但没有说明我应该在类的开头还是结尾添加它
例如:
/**
* JobeetCategory
*
* This class has been auto-generated by the Doctrine ORM Framework
*
* @package jobeet
* @subpackage model
* @author Your name here
* @version SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
*/
class JobeetCategory extends BaseJobeetCategory
{
public function countActiveJobs()
{
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.category_id = ?', $this->getId());
return Doctrine_Core::getTable('JobeetJob')->countActiveJobs($q);
}
public function getSlug()
{
return Jobeet::slugify($this->getName());
}
public function getActiveJobs($max = 10)
{
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.category_id = ?', $this->getId())
->limit($max);
return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
}
}
getActiveJObs
公共函数是本教程中第一个显示的函数,countActiveJobs
是我根据本教程添加的最后一个函数
类中公共函数的顺序重要吗
类中公共函数的顺序重要吗
不,没有。对班级进行整体评价;方法的顺序不相关
因此,虽然它不是绑定,但我遇到的最常见的顺序,也是我最喜欢的排序方法是
class ClassName
{
- Variable definitions
- Class constants
- Constructor
- Public methods
- Destructor (if needed)
- Magic functions (if needed)
- Private / helper methods
}
答案是否定的。这些函数将在其他地方调用,而不是从上到下执行。countActiveJobs在班上是名列前茅还是名列前茅没有任何区别。这是一个有很多答案的问题,而且很大程度上与个人偏好有关:-)从技术上讲,这可能无关紧要,但无论如何都很重要
这里有一个关于结构的建议。假设你是第一次来上课。也许您正在调用它的公共方法来执行某些任务,现在您想了解更多关于它的信息。从顶部的公共变量和函数开始似乎很自然。从抽象的角度考虑它。抽象层次越高,在类中越高。你越往下走,抽象的层次就越低。因此,从顶部的公共功能到底部的一堆私有功能。这将提高可读性
同时,我们希望其他函数调用的函数接近,所以第一次调用函数时,请将其放在调用函数的正下方
有些人练习将实例变量放在使用它的函数的正上方,但这会使类更难读取。特别是,如果有多个函数使用同一实例变量,您将不知道如何查找。通常,将所有常量和实例变量放在顶部
那么我们应该以这样的方式结束:
class MyClass
{
const MY_CONSTANT_ONE
const MY_CONSTANT_TWO
public $myPublicVariableONe
public $myPublicVariableTwo
protected $_myProtectedVariableOne
private $_myPrivateVariableOne
private $_myPrivateVariableTwo
public function DoSomeOfficialStuff()
{
$this->_myNicePrivateMethodOne();
}
private myNicePrivateMethodOne(){
}
public function returnSomeOfficialStuff()
{
$this->_myNicePrivateMethodTwo();
}
myNicePrivateMethodTwo(){
}
}
@佩卡:好的,但根据你的经验,为了避免混乱和组织,把新的公共职能放在最上面还是最下面更好?@jano啊,你的意思是在公共方法列表中。嗯,如果你不是按功能分组的话,我会说到底。不过,将所有“作业”方法和所有“Slug”方法等紧密地组合在一起可能是有意义的。为什么不按字母顺序排列呢?@Gumbo在这种情况下没有意义IMO-getActiveJobs()
可能有一天会伴随着DeleteJob()
和CopyJobs()
,它们很可能会被组合在一起。就我个人而言,我更喜欢公共方法之上的魔法方法,构造函数之下的析构函数。。。我还首先抛出静态变量,然后在构造函数上方抛出静态函数。这都是个人喜好+1.