рдореИрдВ рдЦреБрдж рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ ...
рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рднреВрд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдХреБрдЯрд┐рд▓ рд╣реИ)ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PHP5 рдиреЗ __construct рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдирд╛рдо рдкреЗрд╢ рдХрд┐рдпрд╛
рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд╡рд░реНрдЧ Spadar_Core_Object
{
/ **
* рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг
*
* @staticvar Spadar_Core_Object
* /
рдирд┐рдЬреА рд╕реНрдерд┐рд░ $ oInstance;
...
/ **
* рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╕рд┐рдВрдЧрд▓рдЯрди рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди)
*
* рд╡рд╛рдкрд╕реА Spadar_Core_Object рд╕рд┐рдВрдЧрд▓рдЯрди рдЙрджрд╛рд╣рд░рдг
* /
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getInstance ()
{
рдЕрдЧрд░ (isset (рд╕реНрд╡ :: $ oInstance))
{
self :: $ oInstance = new self ();
}
рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ :: $ oInstance;
}
...
}
рдЕрдм рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд▓рд╛, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╢рд╛рдВрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╢рд╛рдВрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдФрд░ рдЕрдм рд╡реЗ рд╕рднреА рд╡рд░реНрдЧ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рдХрд┐рд╕реА рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП Spadar_Core_Object рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рд╡рд░реНрдЧ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рд╡рд░реНрдЧ Spadar_Core_Object
{
/ **
* рд╡рд╛рд░рд┐рд╕ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг
*
* @staticvar рд╕рд░рдгреА
* /
рдирд┐рдЬреА рд╕реНрдерд┐рд░ $ aInstances = array () ;
...
/ **
* рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХрд╛ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╕рд┐рдВрдЧрд▓рдЯрди рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди)
*
* рд╡рд╛рдкрд╕реА Spadar_Core_Object рд╕рд┐рдВрдЧрд▓рдЯрди рдЙрджрд╛рд╣рд░рдг
* /
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди getInstance ()
{
рдЕрдЧрд░ (isset ( рд╕реНрд╡ :: $ anstances [__ CLASS__] ))
{
рд╕реНрд╡рдпрдВ :: $ рдЖрднрд╛рд░ [__ CLASS__] = рдирдпрд╛ рдЖрддреНрдо ();
}
рд╕реНрд╡ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ :: $ anInstances [__ CLASS__];
}
...
}
рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдирдП рд╕реНрд╡ рдХреЗ рдмрдЬрд╛рдп , рдЪрд░ $ sClassName = __CLASS__ рд╕реЗрдЯ рдХрд░реЗрдВ ; рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ: рдирдпрд╛ $ sClassName ();
рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
PHP5 рдореЗрдВ, рдЖрдк рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рдпрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╡рд░реНрдЧ Spadar_Controller_Widget Spadar_Core_Object рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
{
/ **
* рдмрдЪреНрдЪреЗ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
*
* var рд╕рд░рдгреА
* /
рд╕рдВрд░рдХреНрд╖рд┐рдд $ aChildWidgets = array ();
...
/ **
* рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдПрдХ рдмрдЪреНрдЪрд╛ рдЬреЛрдбрд╝рдирд╛
*
* рдкрд░рдо Spadar_Controller_Widget $ oWidget рдирдП рдмрдЪреНрдЪреЗ
* рд╡рд╛рдкрд╕реА Spadar_Controller_Widget рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
* /
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ addChild ( рд╕реНрд╡рдпрдВ $ oWidget )
{
$ рдпрд╣-> aChildWidgets [] = $ oWidget;
рдпрд╣ $ рд╡рд╛рдкрд╕ рдХрд░реЛ;
}
...
}
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдХреЛ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╡реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдореИрдВ рд╣реВрдБ рдпрд╛ рдореИрдВ рдирд╣реАрдВ рд╣реВрдБ?
рдЖрдЗрдП PHP рдореЗрдВ рд╣рд╛рдЗрдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рджрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ:
рд╡рд░реНрдЧ Spadar_Core_Object
{
...
/ **
* рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрддрд┐
*
* рдкрд░рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ $ sInfo
* Spadar_Core_Object рдХреЛ рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
* /
рдирд┐рдЬреА рд╕рдорд╛рд░реЛрд╣ parseObject ($ sInfo)
{
$ mInfo = $ sInfo;
$ mInfo = @unserialize ($ sInfo);
рдЕрдЧрд░ ( $ mInfo instof рд╕реНрд╡ )
{
рд╡рд╛рдкрд╕реА $ mInfo;
}
рдпрд╣ $ рд╡рд╛рдкрд╕ рдХрд░реЛ;
}
...
}
рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ ...
рдХреНрд▓рд╛рд╕ рдХрд╛рдВрд╕реНрдЯреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╡рд┐рдХреГрдд рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рд╡рд░реНрдЧ Spadar_Controller_Url Spadar_Core_Object рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
{
const PARSE_PROTOCOL = 'рдпреЛрдЬрдирд╛';
const PARSE_HOST = 'host';
...
const BROWSER_ARG_PROTOCOL = рд╕реНрд╡рдпрдВ :: PARSE_PROTOCOL;
/ **
* рдХреНрдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░
*
* URL рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП param string $ sParam рдкреИрд░рд╛рдореАрдЯрд░
* рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ
* /
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ getParam ($ sParam = self :: PARSE_HOST )
{
...
}
...
}
рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдореВрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕реНрд╡ рджреНрд╡рд╛рд░рд╛ рднреА рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рд╕рднреА рдЬреНрдЮрд╛рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ
- рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдирд╛ рдХреЗрд╡рд▓ PHP6 рдореЗрдВ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред