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

Статус
В этой теме нельзя размещать новые ответы.

sesharim

Знаток
Регистрация
3 Окт 2006
Сообщения
299
Реакции
29
Вообщем, существует простой класс.

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

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

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

И ещё. Ищу любую информацию, где очень доступно описана работа с классами, объектами, и всем, что связанно с этим. Заранее спасибо.
 
test::pr();
это статик метод, внутри которого нет переменной $this, и вызов происходит без создания объекта
 
Я вот чуток с классами не дружу. Какой тогда смысл создавать его? Лишняя писанина, теоретично. Ведь так удобнее? Или ...
 
класс - объект, с которым можно выполнять определенные действия - методы.

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

в конце это облегчает работу и делает код понятней.
 
test::pr(); можно использовать, что не создавать новый обьект, а сразу выполнить нужные действия.
 
ТС, в примере уже есть ошибка.

и естественно выводим его: echo $test->pr();
У Вас метод pr НЕ ВОЗВРАЩАЕТ значение, а эхит. ПО сути, получаете конструкцию
PHP:
<?php
echo(echo('xxxxxxxxxx'));
?>
Это уже не есть хорошо. Работать будет, но по логике - херня :)
А по вопросу difour ответил :)
 
Но какая разница между выводом: test::pr(); и $test = new test(); echo $test->pr(); ?
[/B]
В этом примере - никакой.
А вообще - принципиальная. Первый вариант - это по сути вызов функции, незачем было вообще ее внутри класса объявлять.
А вот второй - полноценный вариант - создание объекта и вызов его метода. Объект же помимо методов может нести еще и данные.
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();
 
Вообщем, существует простой класс.

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

Для просмотра ссылки Войди или Зарегистрируйся

А вообще, хорошо бы ещё выкурить весь раздел Для просмотра ссылки Войди или Зарегистрируйся, станет намного легче. :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху