пример:
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 написал(а):
ага, фантастика и магия, поэтому и называются "магические"
Спустя 18 минут, 50 секунд (24.10.2011 - 13:34) Renden написал(а):
caballero
Это и ежу понятно еще 1 переменную в метод подсунуть:)), интересовал вопрос именно можно ли как я привел в примере.
Это и ежу понятно еще 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{но смысла в этом я не вижу, если есть getValue() и setValue() то пускай эти методы делают те функции, которые заложены в их названиях и не надо делегировать их функционал какому-то третьему методу.
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__);
}
}