Решил учить ооп по ускоренной программе. Учитывая что я и классов не знаю , то начал с них =D Разумеется матерюсь по полной потому что не могу понять зачем оно надо и почему функция класса называется методом , это чтобы больше тупых терминов знать ? ну да ладно =D учить то надо ) PHP: <?php class A { function example() { echo "Это первоначальная функция A::example().<br>"; } } class B extends A { function example() { echo "Это переопределенная функция B::example().<br>"; A::example(); } } // Не нужно создавать объект класса A. // Выводит следующее: // Это первоначальная функция A::example(). A::example(); // Создаем объект класса B. $b = new B; // Выводит следующее: // Это переопределенная функция B::example(). // Это первоначальная функция A::example(). $b->example(); ?> Я так и не понял как конкретно создавать обьект. A::example(); - работает $b = new B; $b->example(); - работает (как я понимаю, это нормальное создание обьекта, ну и вызов метода) B::example(); - тоже работает, хоть он и наследует. Не пойму в чём разница , зачем каждый раз писать new если работает и через :: ?
siiXth совет, включи error_reporting(E_ALL | E_STRICT); A::example() - вызов статического метода непосредственно из класса. Для такого вызова не требуется объекта. Работает практически так же, как и обычная функция. Прим: в таком методе, нам естественно, недоступен экземпляр класса (объект) $b->exampe() - нормальный вызов метода у объекта, внутри функции (метода) есть доступ к состоянию объекта $b, т.е. метод example() может изменять поля объекта $b через стандартную переменную-ссылку $this Самое примитивное объяснения классов и объектов: 1. Класс - описание нового типа данных с методами для их обработки (описываются поля и методы) 2. Объект - переменная типа "Класс", содержит в себе как данные, так и методы обработки. Это очень удобно держать данные и методы для обработки этих данных в одном месте. Например Код (Text): typedef struct Employer{ char *name, int salary } Employer int employer_pay(Employer &a){ // Заплатить пользователю // a->salary рублей } int main(){ Employer e; e.name = "Vasja Pupkin"; e.salary = 5000; employer_pay(&e); } PHP: <?php class Employer { public $name; public $salary; public function pay(){ // Заплатить пользователю // $this->salary рублей } } $e = new Employer(); $e->name = 'Vasja Pupkin"; $e->salary = 5000; $e->pay();