Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы 
:(
    Опции темы
Aliance
Дата 2.5.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Никогда не понимал прежназначения классов. Вообще ООп для меня густой лес smile
Почитал вот эту темку, думал разберусь, ах нет.
Не особо понимаю для чего они нужны. Можно просто пример с 1 (одной!!!) переменной, и различные закомментированные действия с ней. Что значат всякие стрелочки ->...ох...как это все трудно smile
PM MAIL WWW ICQ Skype   Вверх
Irokez
Дата 2.5.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



стрелочки имеют такую же функцию как и точка в JavaScript
$SomeObject->method() - вызывает какой-либо метод экземпляра класса $SomeObject
$SomeObject->property - дает доступ к переменной класса, в пхп4 все переменные класса - публичные (public), в пятой версии это уже не так, но пока пхп5 еще не прижился, рассматривать его не будем

объявление сласса:
Код

class MyClass
{
    var $myVar; //переменная класса
    function MyClass($someVar) //конструктор класса - он же метод класса
    {
        $this->myVar = $someVar;
        return true;
    }

    function printVar() //метод класса
    {
        echo $this->myVar;
        return true;
    }
}

здесь мы объявили класс - MyClass, у него задана переменная - myVar, переменные класса объявляются после ключевого слова - var
у класса имеются два метода - MyClass - конструктор класса и метод printVar
конструкторы в пхп4 должны иметь такое же имя как и сам класс.

теперь поробуем использовать объявленные класс:
Код

$myObj = new MyClass('лалала'); //создаем экземпляр класса
$myObj->printVar(); //вызываем метод printVar, выводится "лалала"
echo $myObj->myVar; //обращаемся к переменной класса, выводится "лалала"


Это сообщение отредактировал(а) Irokez - 3.5.2005, 08:44
PM   Вверх
Aliance
Дата 2.5.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Irokez @ 2.5.2005, 22:07)
стрелочки имеют такую же функцию как и точка в JavaScript

Понятно, а пробелы вокруг нее можно ставить?

Цитата(Irokez @ 2.5.2005, 22:07)
return true

это обязательно во всех функциях, или только где необходимо?

И вообще смысл применения. Где классы рационально использовать?
Ведь
Цитата(Irokez @ 2.5.2005, 22:07)
echo $myObj->myVar;

можно заменить на простое
Код

$myVar = "лалала";
echo $myVar;


И еще имя конструктора должно совпадать с именем класса?

Цитата(Irokez @ 2.5.2005, 22:07)
    var myVar; //переменная класса

вот тут ты ничего не перепутал? smile
Пишет:
Цитата

Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE in classes.php on line 4


Это сообщение отредактировал(а) Aliance - 2.5.2005, 21:40
PM MAIL WWW ICQ Skype   Вверх
Irokez
Дата 2.5.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Aliance @ 2.5.2005, 21:34)
Понятно, а пробелы вокруг нее можно ставить?

да можно: $myObj -> method(), но по стандартам PEAR, пробелы не ставятся


Цитата(Aliance @ 2.5.2005, 21:34)
это обязательно во всех функциях, или только где необходимо?

нет, это необязательно, просто привычка


Цитата(Aliance @ 2.5.2005, 21:34)
И вообще смысл применения. Где классы рационально использовать?

классы рационально использовать (на мой взгляд) в больших проектах - там где много функций и переменных, классы позволяют структурировать скрипты, облегчая их.. но это чисто мое мнение, другие скажут наоборот. вообще конечно классы в пхп4 реализованы не лучшим образом, поэтому на каждый плюс есть и свои минусы. к примеру мне очень не хватает в классах пхп4 - перегрузки методов.
Добавлено @ 21:46
Цитата(Aliance @ 2.5.2005, 21:34)
вот тут ты ничего не перепутал? smile
Пишет:

ой, конечно напутал, должно быть: var $myVar;

Цитата(Aliance @ 2.5.2005, 21:34)
И еще имя конструктора должно совпадать с именем класса?

да, это обязательно
PM   Вверх
Aliance
Дата 2.5.2005, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



А наличие конструктора обязательно? Что он делает? Может их быть несколько?
Добавлено @ 22:01
Код

<?php

class MyClass {
    var $myVar; //переменная класса
    function MyClass($someVar) //конструктор класса - он же метод класса
    {
        $this->myVar = $someVar;
        return true;
    }

    function printVar() //метод класса
    {
        echo $this->myVar;
        return true;
    }
}

$myObj = MyClass('лалала');
$myObj->printVar();
echo $myObj->myVar;

?>

Fatal error: Call to undefined function: myclass() in classes.php on line 18

Где ошибка-то? smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 2.5.2005, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Aliance @ 2.5.2005, 22:58)
А наличие конструктора обязательно?

нет

Цитата(Aliance @ 2.5.2005, 22:58)
Что он делает?

просто функция, котоая выполняется при создании объекта.

Цитата(Aliance @ 2.5.2005, 22:58)
Может их быть несколько?

нет

Цитата(Aliance @ 2.5.2005, 22:58)
Где ошибка-то? smile


Цитата(Aliance @ 2.5.2005, 22:58)
$myObj = MyClass('лалала');

$myObj = & new MyClass('лалала');
PM ICQ   Вверх
Aliance
Дата 2.5.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Спасибо все работает.
Еще вопрос: чтобы принять значение для переменной $myVar, нужно передать ей аргументом значение и присвоить его. Соотв. чтобы их было 2 - 2 аргумента. Но если их 1000. ИМХО не удобно так. Возникла идея - массив. Можно реализовать нечто такое:
Код

    var $myVar = new Array();
    function MyClass($someVar) //конструктор класса - он же метод класса
    {
        $this->myVar[$someVar] = $someVar2;
        return true;
    }

$myObj = & new MyClass('1', 'первое значение');
$myObj = & new MyClass('2', 'второе');
............................


Т.е. значения таковые:
$myVar['1'] = 'первое значение';
$myVar['2'] = 'второе';

Что-то в этом духе...

PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 2.5.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Да.
PM ICQ   Вверх
Irokez
Дата 3.5.2005, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Aliance @ 2.5.2005, 21:58)
Где ошибка-то? smile

кошмар .. надо ж было мне так ошибиться smile
$myObj = new MyClass('лалала');
PM   Вверх
IZ@TOP
Дата 3.5.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Aliance @ 2.5.2005, 23:28)
Еще вопрос: чтобы принять значение для переменной $myVar, нужно передать ей аргументом значение и присвоить его. Соотв. чтобы их было 2 - 2 аргумента. Но если их 1000. ИМХО не удобно так. Возникла идея - массив. Можно реализовать нечто такое:

Конечно можно.

Код

<?php

class myClass {
    
    var $myVariable    = array(); // Объявляем переменную класса
    
    function myClass() {
        if(func_num_args() != 0) { // Если количество переданных аргументов не меньше 0.
            $this->myVariable    = func_get_args(); 
            // Функцйия func_get_args возвращает массив состоящий из переданных аргументов
            // в тело функции.
        }
    }
    
    function showSource() {
        print_r($this->myVariable);
        // Выводим массив на экран :)
    }
}

$testObject    = new myClass(1, 2, 43, 'Вася пупкин', true, 0, 'hello');
$testObject->showSource();

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.