Объявление классов

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 29 янв 2011.

Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Здравствуйте.
    PHP:
    Class {tra la la}
    a_class = new ();

    Class 
    {tra la la }
    a_class = new ();
     
    Подскажите, пожалуйста, что надо сделать, чтобы я мог ещё раз в скрипте объявить класс с таким же названием, а данные о предыдущем классе затереть.
     
  2. vanika

    vanika Постоялец

    Регистр.:
    17 фев 2008
    Сообщения:
    100
    Симпатии:
    32
    PHP:
    class Car{
            var 
    $name "BMW";
            
            
            function 
    Getname(){
                echo 
    $this->name;
            }
            
            function 
    Setname($name){
                
    $this->name $name;
            }
        }
        
        
    $object = new Car;
        
        
    // $object->Setname("Mercedess"); // выводит  Mercedess
        
    $object->Getname();  // выводит BMW
    это имели виду?
     
  3. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Если имелось ввиду описать класс с уже объявленым именем - то CLASSKIT расширение в помощь. Без него описание
    Class A {....} приведет к ошибке.
     
  4. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Попробуйте вот так:

    PHP:
    $a_class NULL;
    перед объявлением нового класса.

    У меня схожий вопрос с ТС, дабы не создавать тему тоже спрошу здесь.

    Если нужно функцию класса заменить на другую с таким же названием, это можно как-то сделать?
     
  5. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    а поподробней ...

    PHP:

    class A
    {
       public function 
    f1()
      {
          echo 
    " A ";
      }
    }


    class 
    B  extends A
    {
      public function 
    f1()
      {
          echo 
    " B ";
      }
    }


    class 
    C  extends A
    {
    }


    $a = new A();
    $b = new B();
    $c = new C();

    $a->f1(); // тут будет работать "начальная" функции
    $b->f1();  // тут будет работать "замененная" функция 
    ->f1();  // тут будет работать "начальная" функции
    если конечно такое имелось введу ...
    если же вам нужно создать класс, а потом программным путем изменить в нем поведение метода - то этого походу сделать нельзя ... а если и можно - то не желательно делать, так как такое поведение типа "не в стиле ооп" и усложнит дальнейшее понимание кода
     
    drawing4 нравится это.
  6. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Предложенный вами вариант может сработать, попробую на неделе и отпишусь
     
  7. shamantc

    shamantc ЗлОй ШаМан

    Заблокирован
    Регистр.:
    3 ноя 2008
    Сообщения:
    651
    Симпатии:
    183
    Тоже заинтересовался ООП, дабы не создавать новую тему, есть ли смысл сейчас учить ООП для php, с учетом того что даже в php5 нет полной поддержки ООП как в Си
     
  8. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Конечно есть, с классами функций удобнее работать. Подключаете класс и обращаетесь к нужной функции.

    какой-то философский вопрос задали
     
  9. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Если без хитромудрых костылей, то по уму делается так:

    Используется понятие/паттерн Dependency Inversion. То есть в то место, где используется экземпляр класса, он уже приходит готовым, а создается где то в другом месте. В ООП для этого есть интерфейсы. Но в пхп это не обязательно (хотя желательно), потому что есть duck typing.

    А вот уже на этапе создания экземпляра и решается какой класс использовать. Родной или "подмененный". Причем "подмененный" может быть наследником родного, оберткой вокруг родного, а то и вообще левым классом. Они обладают одним интерфейсом и для кода их использующего "на одно лицо".

    Как то так по простому.
     
  10. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    А в коде все это как выглядит? Элементарный пример какой-то