Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类中PHP公共函数的顺序是否会影响其执行?_Php_Class_Function_Public - Fatal编程技术网

类中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.