![]() |
Помогите Класс Php
Здравствуйте реши написать класс авторизации для сайта.
для начала решил вспомнить классы. Вот элементарный класс: PHP код:
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 Car { $gas=0; function addGas($ammount) { $this->gas=$this->gas + $ammount; echo "Â áàê çàëèòî $ammount ëèòðîâ áåíçèíà"; } } Тоже самое! ?> |
PHP код:
|
PHP код:
|
Цитата:
|
Цитата:
|
Я к человеческому фактору...
В таком примере да, но при большем объеме кода совпадения в именах классов и функций доставят массу хлопот... |
Цитата:
|
Цитата:
|
Цитата:
это зависит от того, надо ему автоматом задавать значения атрибутов сразу при создании объекта или нет. |
Кто ответит на вопрос без использования php получит респект от всех кто откроет тему, надеюсь на вашу честность, порой полезно себя проверить - "Что выведется в итоге?" |
foo:foo
Хотя наверное foofoo:foo |
Всем спаибо! Разобрался!
Оказывается нужно добовлять "public" пред именем пременной! |
Выведедся соообщение о доступе к закрытому свойству класса, а именно - $__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 |
| Время: 08:15 |