
20.01.2017, 21:55
|
|
Постоянный
Регистрация: 10.02.2012
Сообщений: 830
Провел на форуме: 300820
Репутация:
90
|
|
Сообщение от crlf
↑
У меня в тестовом скрипте жёсткая каша, хрен разберёшь
Побыстрому накидал небольшой скрипт для вызова
__get/__set,
надеюсь разберёшься:
Spoiler
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]map[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"]; [/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]realObject[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"]; } public function[/COLOR][COLOR="#0000BB"]__set[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) { } public function[/COLOR][COLOR="#0000BB"]__get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) { } public function[/COLOR][COLOR="#0000BB"]offsetExists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) { return isset([/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]map[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]]); } public function[/COLOR][COLOR="#0000BB"]offsetUnset[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) { throw new[/COLOR][COLOR="#0000BB"]Exception[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'Not supported !'[/COLOR][COLOR="#007700"]); } public function[/COLOR][COLOR="#0000BB"]offsetSet[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) { return[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__set[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]); } public function[/COLOR][COLOR="#0000BB"]offsetGet[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]) { return[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]); } } class[/COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"]{ private[/COLOR][COLOR="#0000BB"]$debugStateName[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'flag'[/COLOR][COLOR="#007700"]; private[/COLOR][COLOR="#0000BB"]$_instance[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'ccc'[/COLOR][COLOR="#007700"]; } class[/COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"]extends[/COLOR][COLOR="#0000BB"]GenericMapper[/COLOR][COLOR="#007700"]{ private[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'aaa'[/COLOR][COLOR="#007700"]; private[/COLOR][COLOR="#0000BB"]$id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'bbb'[/COLOR][COLOR="#007700"]; public function[/COLOR][COLOR="#0000BB"]__construct[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"]) { [/COLOR][COLOR="#0000BB"]parent[/COLOR][COLOR="#007700"]::[/COLOR][COLOR="#0000BB"]__construct[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$realObject[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$map[/COLOR][COLOR="#007700"]); } } class[/COLOR][COLOR="#0000BB"]Session[/COLOR][COLOR="#007700"]{ } [/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]Session[/COLOR][COLOR="#007700"]; [/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]user[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"](new[/COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]=> array([/COLOR][COLOR="#DD0000"]'type'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'function'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'target'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'showNice'[/COLOR][COLOR="#007700"]))); echo[/COLOR][COLOR="#DD0000"]"\n__get:\n"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]urlencode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]base64_encode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]serialize[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]))).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"]; [/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]User[/COLOR][COLOR="#007700"](new[/COLOR][COLOR="#0000BB"]Debug[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'user'[/COLOR][COLOR="#007700"]=> array([/COLOR][COLOR="#DD0000"]'type'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'function'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'target'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'showNice'[/COLOR][COLOR="#007700"]))); echo[/COLOR][COLOR="#DD0000"]"\n__set:\n"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]urlencode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]base64_encode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]serialize[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]))).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"]; [/COLOR][COLOR="#0000BB"]?> [/COLOR][/COLOR]
подебажил
для __set не передается класс Session поэтому отрабатывает это условие
Код:
if (!isset($sess->user)) {
$sess->user = new User();
$sess->save();
}
крут что сказать я не додумался до этого
правда туда всегда передаётся объект User...
честно говоря пока сам в режиме рандома -_-
|
|
|