За последние 24 часа нас посетили 33024 программиста и 1821 робот. Сейчас ищут 853 программиста ...

Cоздание простого класса

Тема в разделе "PHP для новичков", создана пользователем Валерий_paparazzi, 3 мар 2011.

  1. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Начал изучать классы.Создал простой класс:
    <?php
    //определение класса
    class classname
    {
    //задействуем конструктор для установки начальных параметров
    function _construct($param)
    {
    echo "Конструктор вызван с параметром $param <br />";
    }
    }
    //cоздание экземпляров класса
    $a = new classname('Первый');
    $b = new classname('Второй');
    $c = new classname('');
    ?>
    Насколько я понял, должно выводится следующее:
    Конструктор вызван с параметром Первый
    Конструктор вызван с параметром Второй
    Конструктор вызван с параметром
    Но почему-то ничего не выводится...Почему так может быть?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    function _construct($param='')
     
  3. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    igordata
    Заменил,то же самое(
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Код (Text):
    1. public function __construct()
    __construct с двумя подчеркиваниями в начале.
     
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    class classname
    {
    //задействуем конструктор для установки начальных параметров
    public $param;

    function __construct($param)
    {
    $this->param = $param;
    echo "Конструктор вызван с параметром {$this -> param} <br />";
    }
    }
    //cоздание экземпляров класса
    $a = new classname('Первый');
    $b = new classname('Второй');
    $c = new classname('');

    хотя с меня такой советчик по ооп)
     
  6. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Всем спасибо,оказалось,нужно было два подчеркивания...А в книге об этом ничего не писалось.
     
  7. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    либо плохо читал, либо плохая книжка
     
  8. Benjamin

    Benjamin Активный пользователь

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Что за книжка?
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Книжка хорошая, как всегда скан плохой.
     
  10. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    То all:
    Книжка Лары Томсон "Разработка веб-приложений с помощью PHP и MYSQL"

    Не хотел создавать создавать новую тему.Вот еще один класс:
    <?php
    //определение класса
    class classname
    {

    var $attribute;
    function __get($name)
    {
    return $this->$name;
    }
    function __set($name, $value)
    {
    if( $name ='attribute' && $value >=0 && $value <= 100)
    $this->$name = $value;
    }
    }
    $a = new classname();
    $a->$attribute = 5;
    echo $a->attribute;

    ?>
    Пры попытке вывода выдает ошибку:
    Notice: Undefined variable: attribute in C:\www\tm\create_class_3.php on line 21
    То есть,я так понял, не опознается атрибут.В чем может быть дело?
     
  11. Benjamin

    Benjamin Активный пользователь

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Код (Text):
    1. $a->attribute = 5;
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    $a->attribute = 5; вместо $a->$attribute = 5;

    А вообще - книгу по php4 лучше выкинуть.
     
  13. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Benjamin
    Cпасибо.Походу это в книжке опечатка была.
     
  14. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    3-е издание разве о PHP4?Все-таки 2008 год выпуска.Да и везде PHP5 упоминается.Наверное все-таки о ранних версиях
    PHP5
     
  15. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    чувак, я только добра желаю))))
    в 5 версии используются модификаторы доступа(с самых ранних версий)


    PHP:
    1. <?php
    2. //определение класса
    3. class Myclassname
    4. {
    5.  
    6.     public $attribute;
    7.  
    8.     public function __get($name)
    9.     {
    10.         return $this->$name;
    11.     }
    12.     public function __set($name, $value)
    13.     {
    14.         if( $name ='attribute' && $value >=0 && $value <= 100)
    15.             $this->$name = $value;
    16.     }
    17. }
     
  16. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    может лара томпсон об этом не знала?)
     
  17. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Я в курсе,они идут в следующем примере в книге) так что,имхо,все нормально.
    Ну если так,то можешь посоветовать еще какую-нибудь книгу?[/php]