Здравствуйте реши написать класс авторизации для сайта. для начала решил вспомнить классы. Вот элементарный класс: PHP: <?php class test { $this->v='works'; } $t=new test(); echo $t->v; ?> На экране отображается следующее: Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in Z:\home\ssb1981.ru\www\Test\class.php on line 5 Стоит Denwer 3.
инициализировать переменные в теле класса можно только функциях, и конструктор тоже обязателен, и обявлять пременные тоже надо PHP: <?php class test { var $v; function test() { $this->v='works'; } } $t=new test(); echo $t->v; ?> >>для начала решил вспомнить классы. может стоит не вспоминать а поучить?
Погоди! Я открыл учебник вот код: <?php class Car { $gas=0; function addGas($ammount) { $this->gas=$this->gas + $ammount; echo "Â áàê çàëèòî $ammount ëèòðîâ áåíçèíà"; } } Тоже самое! ?>
PHP: //class function test() { return $this->v='works'; } //class ... $t=new test(); echo $t->test(); так правильнее?
PHP: <?php class test { var $v = 'HELLO'; } $t=new test(); echo $t->v; ?> 2Piflit у тебя название класса и функции совпадает, для отладки - очень вредно =)
Я к человеческому фактору... В таком примере да, но при большем объеме кода совпадения в именах классов и функций доставят массу хлопот...
Ну может быть... это было в 4 ветке, а в пятой это уже не так важно (http://www.php.net/manual/ru/language.oop5.php)...
у меня в детстве был Lego. ога это зависит от того, надо ему автоматом задавать значения атрибутов сразу при создании объекта или нет.
Кто ответит на вопрос без использования php получит респект от всех кто откроет тему, надеюсь на вашу честность, порой полезно себя проверить - "Что выведется в итоге?" PHP: <?php class firstClass { private $_; function setValue ( $value ) { $this->_ = $value; } } class secondClass extends firstClass { public $_; } $__s = new firstClass(); $__z = new secondClass(); echo $__s->setValue( 'foo' ); echo $__z->setValue( 'foo' ); echo $__z->_ . ':' . $__s->_; ?>
Helios прав, выведется только fatal error тк обращаться к private переменным нельзя вне класса, а $__z->_ будет пуст
Ссылка в тему... http://ru2.php.net/manual/ru/language.oop5.visibility.php Читал-читал и ничего не понял С ООП я не дружу
Тут больше интересен не доступ к закрытым полям класса, а неудавшийся Паблик Морозов: в одном объекте $__z образуется две переменные с одним именем, но с разными уровнями доступа касательно "подобъектов", чтоли. Вот по человечески: Класс firstClass содержит переменную $_ с флагом private, т.е. доступ к ней имеют только методы данного класса и не более. Класс secondClass тоже содержит переменную $_, но с флагом public. По идее, она должна редефайнить переменную в классе-родителе и наделять ее флагом public (классическое поведение Пабликов Морозовых). Но не тут-то было. Благодаря тому, что в firstClass использовался именно private, а не protected (private + доступ из классов-потомков), при инициализации secondClass происходит следующее: 1 инициализация firstClass, появляется private $_; 2 инициализация secondClass, который не имеет доступа к firstClass::_, потому делает себе вторую переменную public $_. При этом функция setValue имеет влияние не над public secondClass::_, а над private firstClass::_; Помнится подобная ситуация наблюдается в сях, только там дело касалось указателей на классы и лечилось методами с модификатором virtual