На этот вопрос много ответов и много личных предпочтений :-) С технической точки зрения это может не иметь значения, но, тем не менее, имеет значение.
Вот одно предложение для структуры.Представьте, что вы впервые посещаете занятия.Возможно, вы вызываете его публичные методы для выполнения какой-то задачи, и теперь вы хотите больше узнать об этом.Кажется довольно естественным начать с открытых переменных и функций сверху.Думайте об этом с точки зрения абстракции.Более высокие уровни абстракции высоко в классе.Чем ниже вы спускаетесь, тем ниже уровень абстракции.Таким образом, из общедоступных функций вверху вы получите кучу приватных функций снизу.Это сделает для лучшей читаемости.
В то же время мы хотим, чтобы функции, вызываемые другими функциями, были близки, поэтому при первом вызове функции поместите ее прямо под вызывающей функцией.
Некоторые практики помещают переменные экземплярапрямо над функцией, которая ее использует, но это может затруднить чтение класса.Особенно, если есть несколько функций, использующих одну и ту же переменную экземпляра, вы не будете знать, как искать.Как правило, все константы и переменные экземпляра помещаются вверху.
Тогда мы должны получить что-то вроде этого:
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(){
}
}