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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменная как обьект 
:(
    Опции темы
skifoz
Дата 18.3.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Никак не могу понять как можно реализовать в классе $m
такую конструкцию:
$m->obj['abc']->empty();

пусть будет obj в классе - ассоциативный массив
а empty() это функция для проверки? задан ли элемент массива или нет.
Вот все никак не могу понять как можно передать обьект переменной obj['abc']
Если кто знает подскажите, или приведите пример.
PM MAIL WWW   Вверх
Serkys
Дата 18.3.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

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



Что-то ты совсем нехорошее делаешь.
Запихивай obj['abc'] в empty() как параметр:
Код

$m->empty(obj['abc']);

Или я тебя не совсем понял.
PM MAIL   Вверх
Messenger
Дата 18.3.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: нет
Всего: 1



Может этак?

Код

class Nix{
  function emp(){echo "<h5>Called Nix->emp()</h5>";}
};

class Pop{
  var $item;
  function Pop()
  {
    $this->item["nix"] = new Nix();
  }
};

 $p = new Pop;
 $p->item["nix"]->emp();

PM MAIL   Вверх
skifoz
Дата 18.3.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Цитата

Что-то ты совсем нехорошее делаешь.
Запихивай obj['abc'] в empty() как параметр:
Код

$m->empty(obj['abc']);

Или я тебя не совсем понял.

Ты меня не так понял.
В твоем случае код стал бы выглядеть не так
Код

$m->empty(obj['abc']);

а вот так
Код

$m->empty($m->obj['abc']);

Что собственно меня не удовлетворяет, это слишком легко так сказать.
Этот вариант ::
Код

class Nix{    
  function emp(){echo "<h5>Called Nix->emp()</h5>";}    
};    
class Pop{    
  var $item;    
  function Pop()    
  {    
    $this->item["nix"] = new Nix();    
  }    
};    
 $p = new Pop;    
 $p->item["nix"]->emp();

более ближе к моему вопросу, но тоже слишком легко. Мне нужно чтоб это можно было сделать создав всего один класс,
то есть переменная $obj это переменная класса $m , и функция empty() тоже из этого класса.
Вот и думаю как можно это реализовать, знаю что можно но не понял пока как...
Вообщем хочу разобратся в этом...
PM MAIL WWW   Вверх
Ciber SLasH
Дата 19.3.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 3
Всего: 67



Цитата(skifoz @ 18.3.2006, 16:48 Найти цитируемый пост)
Мне нужно чтоб это можно было сделать создав всего один класс,
то есть переменная $obj это переменная класса $m , и функция empty() тоже из этого класса.

Но ведь конструкция "->" — это доступ к методу или полю объекта, т.е. получается, что $m->obj['abc'] — ссылка на поле obj['abc'] объекта $m, а $m->obj['abc']->empty(); — метод объекта, родитель которого obj['abc'], который в свою очередь потомок $m. Из этого следует, что в операции участвует 2 объекта.
PM   Вверх
smartov
Дата 19.3.2006, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Ciber SLasH,
Цитата(Ciber SLasH @ 18.3.2006, 23:27 Найти цитируемый пост)
Но ведь конструкция "->" — это доступ к методу или полю объекта, т.е. получается, что $m->obj['abc'] — ссылка на поле obj['abc'] объекта $m, а $m->obj['abc']->empty(); — метод объекта, родитель которого obj['abc'], который в свою очередь потомок $m. Из этого следует, что в операции участвует 2 объекта.

А у него наверное элементы массива obj - тоже обьекты такого же класса, в который они входят. Классовая рекурсия эдакая ;\ Нафига правда не пойму.

Код

class Pop{    
  var $item;    
  function Pop()    
  {    
        
  }

  function Fill()
  {
     $this->item["element1"] = new Pop();
  }

  function empty()
  {
    return true;
  }  
};    
 $p = new Pop;
 $p->Fill();
 if (@$p->item["element1"]->empty()) {
  echo "Элемент создан давно уже и ждет, что с ним сделают";
 } else {
  echo "Если б не собака, то светилась бы сейчас матерая ошибка потому что элемента нету а мы у него метод класса вызываем.";
 }


Вопрос в одном. Если все равно можно проверить существование любого элемента массива через (кроме очень отдельных случаев, типа интегера 0, или пустой но все же существующей строки, и т.п.)
Код

if($m->obj['abc'])....

то зачем себе голову ломать и функцию писать. Тем более членом класса.
PM MAIL   Вверх
skifoz
Дата 19.3.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Функцию не собираюсь писать блин, это чисто для саморазвития, просто не знаю как сделать вот и спросил... думаю вдруг кто нибдуть знает... понятно дело есть куча способов реализовать данную функцию, только зачем? функция придумана чисто для примера, чтобы понять как, куда, чего, что требуется.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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