1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Вопрос о классах.

Тема в разделе "Web Coding", создана пользователем sesharim, 19 янв 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Вообщем, существует простой класс.

    PHP:
    class test {
        function 
    pr() {
            echo 
    "test (pr)";
        }
    }
    потом указываем класс:
    PHP:
    $test = new test();
    и естественно выводим его: echo $test->pr();

    Но какая разница между выводом: test::pr(); и $test = new test(); echo $test->pr(); ?

    Просто хочу понять это по более доступному мнению.

    И ещё. Ищу любую информацию, где очень доступно описана работа с классами, объектами, и всем, что связанно с этим. Заранее спасибо.
     
  2. difour

    difour Прохожие

    test::pr();
    это статик метод, внутри которого нет переменной $this, и вызов происходит без создания объекта
     
  3. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Я вот чуток с классами не дружу. Какой тогда смысл создавать его? Лишняя писанина, теоретично. Ведь так удобнее? Или ...
     
  4. difour

    difour Прохожие

    класс - объект, с которым можно выполнять определенные действия - методы.

    лишней писанины не будет, как только начнешь делать наследование, тогда старый код не приедтся переписывать, а просто будешь его использовать или перегружать.

    в конце это облегчает работу и делает код понятней.
     
  5. itex

    itex

    Регистр.:
    15 ноя 2007
    Сообщения:
    274
    Симпатии:
    64
    test::pr(); можно использовать, что не создавать новый обьект, а сразу выполнить нужные действия.
     
  6. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    ТС, в примере уже есть ошибка.

    У Вас метод pr НЕ ВОЗВРАЩАЕТ значение, а эхит. ПО сути, получаете конструкцию
    PHP:
    <?php
    echo(echo('xxxxxxxxxx'));
    ?>
    Это уже не есть хорошо. Работать будет, но по логике - херня :)
    А по вопросу difour ответил :)
     
  7. aabramov

    aabramov Создатель

    Регистр.:
    18 янв 2008
    Сообщения:
    16
    Симпатии:
    1
    В этом примере - никакой.
    А вообще - принципиальная. Первый вариант - это по сути вызов функции, незачем было вообще ее внутри класса объявлять.
    А вот второй - полноценный вариант - создание объекта и вызов его метода. Объект же помимо методов может нести еще и данные.
    PHP:
    // объявление класса
    class test {
        
    // объявление поля класса
        
    var $var1;
        
    // объявление метода класса
        
    function pr() {
            return( 
    strtoupper($this->var1) . "\n" );
        }
    }  

    // Создаем два разных экземпляра класса
    $test = new test();
    $test1 = new test();
    // и присваиваем их полям разные значения
    $test->var1 'чего-то';
    $test1->var1 'а здесь совсем другое';

    // А теперь вызываем их методы
    echo $test -> pr();
    echo 
    $test1 -> pr();
     
  8. Sergeknsk

    Sergeknsk Постоялец

    Регистр.:
    17 окт 2007
    Сообщения:
    50
    Симпатии:
    9
    http://www.php.su/learnphp/phpoo/

    А вообще, хорошо бы ещё выкурить весь раздел http://ru2.php.net/manual/ru/language.oop5.php, станет намного легче. :)
     
Статус темы:
Закрыта.