разница между областью видимости класса и объекта - PullRequest
2 голосов
/ 13 ноября 2010

есть ли разница в производительности?в чем главное отличие?и есть еще что-то вроде

public static function
static public function

это то же самое?

извините за вопрос новичка, спасибо за поиск

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

Разницы между ними нет:

public static function
static public function

Оба доступны за пределами класса. В обоих случаях вы не можете использовать $ this внутри функции, потому что статическая функция не требует объекта, который будет создан.

Считайте, что у вас есть класс автомобилей.

// Constructors call to a private static function add_this_car();
$car1 = new Cars('bentley');
$car2 = new Cars('Porsche GT1');

// public static function get_created_cars();
$all_cars = Cars::get_created_cars();

Таким образом, класс может позаботиться обо всех его экземплярах (и ссылках на каждый). И вещи, которые должны обрабатываться самим классом и не требуют создания экземпляра.

1 голос
/ 13 ноября 2010

Представьте себе класс, полный статических методов, например, изящный контейнер для хранения связанных функций.

Скажем, вы хотите создать класс, полный ваших любимых функций форматирования строк.

Тогда вы можете сказать MyClass::MakeUppercase($string), чтобы сделать строку заглавной. Вы можете сказать MyClass::MakeLowercase($string), чтобы сделать строку строчной.

Поскольку ваш служебный класс не представляет какой-либо объект и не имеет какого-либо внутреннего состояния для отслеживания, у вас нет оснований для создания экземпляров его объектов. Нет $myvar = new MyClass(), прежде чем вы сможете использовать функции. Это просто потратило бы впустую память, создавая объекты, которые никогда не имели бы различные внутренние состояния, чтобы отслеживать.

...