[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Можно ли такое?
Renden
Доброго, потихоньку пытаюсь писать на ООП, поэтому возник очередной вопрос
пример:

class Test{
private function some($data) {
if(вызван методом getValue)
//один запрос
if(вызван методом setValue)
//совсем другой запрос
}

function getValue($id) {
$this->some($id);
}

function setValue($value) {
$this->some($value);
}
}


Вопрос в том есть ли какая-нить функция которая может отловить какой метод запросил другой метод, или это из рода фантастики?)




Спустя 2 минуты, 43 секунды (24.10.2011 - 13:13) redreem написал(а):

Спустя 1 минута, 27 секунд (24.10.2011 - 13:14) caballero написал(а):
объяви еще одну переменную и в нее записывай каком метод был вызван

а вообще непонятен смысл вызывать общий метод чтобы потом в этом методе разбиратся кто его вызвал

Спустя 50 секунд (24.10.2011 - 13:15) redreem написал(а):
ага, фантастика и магия, поэтому и называются "магические" smile.gif

Спустя 18 минут, 50 секунд (24.10.2011 - 13:34) Renden написал(а):
caballero
Это и ежу понятно еще 1 переменную в метод подсунуть:)), интересовал вопрос именно можно ли как я привел в примере.
Цитата
а вообще непонятен смысл вызывать общий метод чтобы потом в этом методе разбиратся кто его вызвал

Ну если 2 метода делают почти одно и тоже, смысл писать 2 раза, проще создать 1 метод общий, разьве нет?

Спустя 20 часов, 43 минуты, 24 секунды (25.10.2011 - 10:17) SlavaFr написал(а):
Цитата (Renden @ 24.10.2011 - 10:34)
интересовал вопрос именно можно ли как я привел в примере.

наверно при помощи debug_backtrace() сможеш, но саму идею я нахожу неудачной.

обычно при разработке библиотек пишут абстрактный класс и загоняют в него весь уже имеющийся функционал который может использоватся в наследственных классах.
Да, больше писанины, но зато потом можно многократно и спользовать работающий код в будущем. Да, больше писанины, но зато потом можно многократно и спользовать работающий код в будущем.

Спустя 6 дней, 22 часа, 59 минут, 28 секунд (1.11.2011 - 09:17) linker написал(а):
Либо как было сказано debug_backtrace(), либо передавать название метода
class Test{   
private function some($data, $methodName) {
if ($methodName == 'getValue')
//один запрос
if($methodName == 'setValue')
//совсем другой запрос
}

function getValue($id) {
$this->some($id, __FUNCTION__);
}

function setValue($value) {
$this->some($value, __FUNСTION__);
}
}
но смысла в этом я не вижу, если есть getValue() и setValue() то пускай эти методы делают те функции, которые заложены в их названиях и не надо делегировать их функционал какому-то третьему методу.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.