|
|
|
| Вечерок добрый!
class main{
}
class name1 extends main{
function word($flag1){
$this->flag1 = $flag1;
}
}
class name2 extends main{
function word($flag2){
$this->flag2 = $flag2;
}
}
|
Нужно получить доступ в классе name2 доступ к переменной $this->flag1 как это сделать?
зы Ой блин не туда написал!!! Перенесите пожалуста в PHP! | |
|
|
|
|
|
|
|
для: vorobey
(25.10.2011 в 20:19)
| | вы бред какойто написали) получить можно только так:
class name2 extends main{
function word($flag2){
$this->flag2 = $flag2;
$n1 = new name1();
$n1->word();
var_dump($n1->flag1);
}
}
|
вы не правильно используете ооп. | |
|
|
|
|
|
|
|
для: sl1p
(25.10.2011 в 23:11)
| | Не бред). Я наверно не доходчиво выразился. | |
|
|
|
|
|
|
|
для: vorobey
(25.10.2011 в 20:19)
| | >Нужно получить доступ в классе name2 доступ к переменной $this->flag1 как это сделать?
Не очень понятно ситуация, вы где-то в другом месте устанавливаете значение $this->flag1? Если да, то где и как? Дело в том, что $this - это текущий объект, если вы хотите обратиться к переменной другого объекта, вместо $this следует использовать имя этого другого объекта. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2011 в 11:42)
| | В классе name1 используется flag1 (вкл выкл сессии),
Мне понадобилось использовать этот фла и в классе name2 и чтобы не лезть в код
вывода данных я хочу получить к переменной flag1 доступ в классе name2.
проблема в принципе ерундовая - можно в "рукопашную" его прописать, но мне интересно - как по правильному это сделать.
Выше мне предложили вариант , он работает ,но надо кучу параметров передовать Это не очень удобно делать из за одной переменной. | |
|
|
|
|
|
|
|
для: vorobey
(26.10.2011 в 17:59)
| | А что эти классы делают? Они у вас вроде не статические, но такое ощущение, что из любого объекта производятся какие-то глобальные изменения? Это так? | |
|
|
|
|
|
|
|
для: cheops
(27.10.2011 в 17:23)
| | Нет никаких глобальных изменений не делается.
Вот суть .
Есть главный класс в котором есть методы проверок текста и т.п.
проверка
- сессия (вкл/выкл)
- пусто/ не пусто
- длинна (мало/много) символов
- наличие в базе имени итп
- проверка для мыла
- проверка для имени
и еще несколько функций...
Каждый метод дает ответ массив( ошибка, значение, сообщение)
т.е. нужно при каждой оплошности выдавать предупреждение (если пусто, то ответ "пусто") и дальше по аналогии.
Но не всем нужны эти методы и я использовал небольшие дочерние классы
Например для мыла
проверка
- пустоту, длинны(мин/ макс)
- валидность имаил
и при каждом не правильном или правильном вводе данных создается сессия для этого поля
что бы не терялось значение (ушел со страницы на другую ...)
На всякий случай я сделал в главном классе отключение всех сессий.
Но теперь мне понадобилось сделать отключение только для пароля (понятно почему).
Такой вид в обработчике
// Pass
$Name = new checkContent($link, $conf_lang); // на пустоту, длинну
$pass1 = $Name->checkWord($POST['password1'], 'reg', 'pass1', $confWord['pass_start'], $confWord['pass_end'], false);
$pass2 = $Name->checkWord($POST['password2'], 'reg', 'pass2', $confWord['pass_start'], $confWord['pass_end'], false);
|
А такой перед выводом в шаблон html
$SesOnOff = new checkSessionOnOff($link, $lang);
$pass_1 = $SesOnOff->checkWord($pass1[1], $_SESSION['reg']['pass1'], false);
|
Оба класса являются дочерними одного класса с набором методов.
вот моя задача писать в обработчике FLASE и чтоб не лезть в checkSessionOnOff();
Ибо можно запутаться со временем.
А checkSessionOnOff нужен для того когда сессии созданы и в этот момент я их отключаю
они-же никуда не деваются(не удаляю) и продолжают гадить... вот этот простой переключатель и дает на выходе то от куда надо брать данные . | |
|
|
|
|
|
|
|
для: vorobey
(27.10.2011 в 21:52)
| | 1. Т.е. речь идет о классе, содержащем набор вспомогательных методов? Т.е. объект ему вроде как и не нужен, так как внутри его нет данных, которые нужно хранить? Лучше такие классы объявлять статическими и обращаться к их методам не через ->, а через ::
2. Если вам нужен метод одного класса в другом, и оба класса унаследованы от одного базового класса, нужно перемещать метод в базовый класс. | |
|
|
|
|
|
|
|
для: cheops
(28.10.2011 в 10:41)
| | Да все правильно.
Попробую через ::
Метод мне не нужен, мне нужна переменная , ненужного метода ) | |
|
|
|
|
|
|
|
для: vorobey
(28.10.2011 в 13:01)
| | Сделайте статическую переменную на уровне базового класса и пусть переменная ненужного метода меняет её, тогда она будет доступна и параллельной наследной ветке. | |
|
|
|