MODX рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдкрд░рд┐рд╡рд╣рди рдкреИрдХреЗрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг



MODX рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдХрднреА-рдХрднреА рдПрдХ рдореАрдард╛ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрднрд╡реА рд╕рдордЭ рдЬрд╛рддрд╛ рд╣реИ :)ред

рдпрд╣ рдкреЛрд╕реНрдЯ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк MODX рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рд▓рд┐рдЦ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ MODX рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ред рд╕реНрддрд░ рдФрд╕рдд рд╕реЗ рдКрдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рд░реИрдХ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред

рдПрдХ рдмрд╛рд░, рдЬрдм MODX рдХреНрд░рд╛рдВрддрд┐ рдмрд╕ рджрд┐рдЦрд╛рдИ рджреА, рдпрд╣ рд╢реБрд░реБрдЖрддреА рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдереА, рддрдм рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИред рдЦреИрд░, рдЙрд╕ рдЯреАрдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рд╕реАрдПрдордПрд╕ рдкрд░ рд╣рд╛рд╡реА рдереАред рдФрд░ рдЯреАрдо, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдлрд▓ рд╣реБрдЖ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рд╕реЗ, рдХрдИ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред

рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдмреБрд░рд╛рдИ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ


рдкрд┐рдЫрд▓реЗ рдХрдИ рдорд╣реАрдиреЛрдВ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, MODX рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЖрджрд┐ред рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпред рдирд╣реАрдВ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрдИ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реМрдВрдкрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЦреБрдж рдХреЙрдлреА рдкреАрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ MODX рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреБрдж MODX рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЛ рднреА рд▓рд┐рдЦрд╛, рдкрд╣рд▓рд╛ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреЛ рддрдм рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдмрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдирдХрд▓ рдХреА рдереА, рд╣рдореЗрд╢рд╛ рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ рд░рд╣рд╛ рдерд╛ рдЙрд╕рдХреЗ рд╕рд╛рд░ рдореЗрдВ delving рдирд╣реАрдВред рдФрд░ рдореИрдВрдиреЗ рдХрд░ рджрд┐рдпрд╛ред

рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рдкреИрдХреЗрдЬ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЕрдзрд┐рдорд╛рдирддрдГ рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рдЧрддрд┐ рдХреЗ рд╕рд╛рдеред рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕реНрд░реЛрдд рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЪреИрдЯ рдореЗрдВ рдЬреЗрд╕рди рдмреНрд░реЗрдХрд┐рдВрдЧ рдиреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ред

рдФрд░ рдХреМрди рд╕рд╛?


рдкрд╣рд▓реА рдмрд╛рдд рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реА рдХрд┐ рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рд╕реАрдзреЗ xPDO рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдФрд░ MODX рдореЗрдВ рдХреЗрд╡рд▓ рд░реИрдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрдм рдЬрдм MODX рд╕реНрдерд╛рдкрд┐рдд рд╣реЛред рдЗрд╕рд▓рд┐рдП, рд╢рд╛рдпрдж рдХреЗрд╡рд▓ xPDO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ, xPDO рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

public function __construct( $dsn, $username = '', $password = '', $options = [], $driverOptions= null ); 

рдЬреЗрд╕рди рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рд╛рд░реАрд░рд┐рдХ рд╕рдВрдмрдВрдз рдареАрдХ рдЙрд╕реА рд╕рдордп рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЖрд▓рд╕реА рдЕрдкрдиреА рд╕рд╛рд░реА рдорд╣рд┐рдорд╛ рдореЗрдВ рд▓реЛрдбред рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред

рддреАрд╕рд░рд╛ рдореБрджреНрджрд╛ xPDO рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдерд╛ред рд╕рдВрдЧреАрддрдХрд╛рд░ рддреБрд░рдВрдд рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖ рдЧрдпрд╛, рд▓реЗрдХрд┐рди 2.x рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди MODX рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ 3.x рд╢рд╛рдЦрд╛ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рд╡рд░реНрдЧ рдирд╛рдо 2.x рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЯрдХрд░рд╛рд╡ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрд╕рдВрдЧрддред рддрдм рдореБрдЭреЗ рдЧрд┐рдЯ рдЯреВрд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдПрдХреНрд╕рдкреАрдбреАрдУ рдХреЛ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдерд╛ред

рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрди рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВред

рдлрд┐рд░, рдпрджрд┐ рдпрд╣ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 $ git submodule add https://github.com/username/reponame 

рдпрд╣ рдХрдорд╛рдВрдб рдХреНрд▓реЛрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рдЖрдкрдХреЛ git рдПрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдлреЛрд▓реНрдбрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкреВрд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдмрдореЙрдбрд▓ рд╕реЗ рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рддрд╛рдХрд┐ рдПрдХ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХреЗ, рдЖрдкрдХреЛ рд╕рдмрдореЙрдбрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ .gitmodules рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Slackify рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 [submodule "_build/xpdo"] path = _build/xpdo url = https://github.com/modxcms/xpdo.git branch = 2.x 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрдм рдХреНрд▓реЛрдирд┐рдВрдЧ, рдмрд╕ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЧрд┐рдЯ рд╕рднреА рдирд┐рд░реНрднрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ред
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХреНрд╕рдкреАрдбреАрдУ рд╣реИ, рдПрдХреНрд╕рдкреАрдбреАрдУ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХреНрд╕рдкреАрдбреАрдУ рдХреЛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ (рдЧрд┐рдЯ рд╕рдмрдореЙрдбреНрдпреВрд▓) рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдХ рдХреЛрдб рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рдЖрдЗрдП рд╕рдордЭрддреЗ рд╣реИрдВ


рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП Slackify рдРрдб- рдСрди рдХреА рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ ред рдпрд╣ рдШрдЯрдХ GitHub рдкрд░ рдореБрдлреНрдд рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рд╕реНрд╡-рдЕрдзреНрдпрдпрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

XPDO рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


рд╣рдо рдкреИрдХреЗрдЬ рдирд╛рдо рдФрд░ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ xPDO рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред

 require_once 'xpdo/xpdo/xpdo.class.php'; require_once 'xpdo/xpdo/transport/xpdotransport.class.php'; $xpdo = xPDO::getInstance('db', [ xPDO::OPT_CACHE_PATH => __DIR__ . '/../cache/', xPDO::OPT_HYDRATE_FIELDS => true, xPDO::OPT_HYDRATE_RELATED_OBJECTS => true, xPDO::OPT_HYDRATE_ADHOC_FIELDS => true, xPDO::OPT_CONNECTIONS => [ [ 'dsn' => 'mysql:host=localhost;dbname=xpdotest;charset=utf8', 'username' => 'test', 'password' => 'test', 'options' => [xPDO::OPT_CONN_MUTABLE => true], 'driverOptions' => [], ] ] ]); 

рдореИрдВрдиреЗ xPDO рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ _build рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рдЪрд░рдг рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬреЛ рдШрдЯрдХ рдХреЗ рдореБрдЦреНрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдирд╣реАрдВ рдЖрдПрдЧрд╛ред рд▓рд╛рдЗрд╡ MODX рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдкрд░ xPDO рдХреА рджреВрд╕рд░реА рдкреНрд░рддрд┐ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

XPDO рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо dsn рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ xPDO рдХреЗ рдЕрдВрджрд░ рдХреИрд╢ рдлреЛрд▓реНрдбрд░ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реЛред рдпрд╣ рд╣реИ рдХрд┐, xPDO рдЖрд░рдВрднрд┐рдХ рд╣реИред

рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╣реИрдХ рдХрд░рдирд╛


рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╕рдордп рд╕реНрдерд╛рдкрд┐рдд MODX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред MODX рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧ рдХреЛ рдвреВрдБрдврддрд╛ рд╣реИ, рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (_mysql рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ) рдХреЛ рдвреВрдБрдврддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ (рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЖрдкрдХреЛ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ рдХрд┐ рдХрдХреНрд╖рд╛ _mysql рдирд╣реАрдВ рдорд┐рд▓рд╛, рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рди рддреЛ рдЖрдзрд╛рд░ рд╣реИ рдФрд░ рди рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

 class modNamespace extends xPDOObject {} class modSystemSetting extends xPDOObject {} 

рд╣рдо рдПрдХ рдбрдореА рдХреНрд▓рд╛рд╕ (рд╕реНрдЯрдм) рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ xPDO рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдВрдЪрд╛ рдХрд┐ рд╡рд╕реНрддреБ рдХрд┐рд╕ рд╡рд░реНрдЧ рдХреА рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдРрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ, рдмрд╕ $category->addOne($plugin); рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА MODX рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдореЗрдВ рджреЗрдЦрд╛, рддреЛ рдЖрдкрдиреЗ рд╕рдВрднрд╡рддрдГ рдПрдЧреНрд░реАрдЧреЗрдЯ рдФрд░ рдХрдореНрдкреЛрдЬрд┐рдЯ рдЬреИрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рджреЗрдЦрд╛ рдерд╛ред рдпрд╣ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рд╡реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреБрд▓ рддрддреНрд╡ modCategory рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╣рд╛рде рд╕реЗ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред getFKDefinition рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

 class modCategory extends xPDOObject { public function getFKDefinition($alias) { $aggregates = [ 'Plugins' => [ 'class' => 'modPlugin', 'local' => 'id', 'foreign' => 'category', 'cardinality' => 'many', 'owner' => 'local', ] ]; return isset($aggregates[$alias]) ? $aggregates[$alias] : []; } } 

рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдореЗрдВ, рдХреЗрд╡рд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, modCategory рд╡рд░реНрдЧ рдХреА addMany рд╡рд┐рдзрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреИрдХреЗрдЬ рдореЗрдВред

рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ


 $package = new xPDOTransport($xpdo, $signature, $directory); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ $xpdo рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рдЗрд╕ рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА 2ред $signature - рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо, рд╕рдВрд╕реНрдХрд░рдг рд╕рд╣рд┐рдд, $directory - рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рдкреИрдХреЗрдЬ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдпреЗ рдЪрд░ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ


рд╣рдореЗрдВ рд▓реЗрдХреНрд╕рд┐рдХреЙрди рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЛрдВ рдХреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

 $namespace = new modNamespace($xpdo); $namespace->fromArray([ 'id' => PKG_NAME_LOWER, 'name' => PKG_NAME_LOWER, 'path' => '{core_path}components/' . PKG_NAME_LOWER . '/', ]); $package->put($namespace, [ xPDOTransport::UNIQUE_KEY => 'name', xPDOTransport::PRESERVE_KEYS => true, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::RESOLVE_FILES => true, xPDOTransport::RESOLVE_PHP => true, xPDOTransport::NATIVE_KEY => PKG_NAME_LOWER, 'namespace' => PKG_NAME_LOWER, 'package' => 'modx', 'resolve' => null, 'validate' => null ]); 

рдкрд╣рд▓рд╛ рднрд╛рдЧ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬрд┐рд╕рдиреЗ рдХрднреА рднреА MODX рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИред рдкреИрдХреЗрдЬ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред put рд╡рд┐рдзрд┐ рдореЗрдВ 2 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ: рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдпрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдЬреЛ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, xPDOTransport::UNIQUE_KEY => 'name' рдЕрд░реНрде рд╣реИ рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП, name рдХреЗ name рд╕рд╛рде рд╣реА рдирд╛рдо рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк xPDO рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрд╕реА рддрд░рд╣, рдЖрдк рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред

 $package->put($setting, [ xPDOTransport::UNIQUE_KEY => 'key', xPDOTransport::PRESERVE_KEYS => true, xPDOTransport::UPDATE_OBJECT => true, 'class' => 'modSystemSetting', 'resolve' => null, 'validate' => null, 'package' => 'modx', ]); 

рдПрдХ рд╢реНрд░реЗрдгреА рдмрдирд╛рдПрдБ


рдПрдХ рд╢реНрд░реЗрдгреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЧрдЧ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХреНрд╕рдкреАрдбреАрдУ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреЛ рдЗрд╕ рд╢реНрд░реЗрдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдЗрд╕рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╢реНрд░реЗрдгреА рдХреЛ рдкреИрдХреЗрдЬ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЙрд╕реА рд╕рдордп, рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдордЭрдиреЗ, рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрд╛ред

 $package->put($category, [ xPDOTransport::UNIQUE_KEY => 'category', xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => true, xPDOTransport::ABORT_INSTALL_ON_VEHICLE_FAIL => true, xPDOTransport::RELATED_OBJECTS => true, xPDOTransport::RELATED_OBJECT_ATTRIBUTES => [ 'Plugins' => [ xPDOTransport::UNIQUE_KEY => 'name', xPDOTransport::PRESERVE_KEYS => false, xPDOTransport::UPDATE_OBJECT => false, xPDOTransport::RELATED_OBJECTS => true ], 'PluginEvents' => [ xPDOTransport::UNIQUE_KEY => ['pluginid', 'event'], xPDOTransport::PRESERVE_KEYS => true, xPDOTransport::UPDATE_OBJECT => false, xPDOTransport::RELATED_OBJECTS => true ] ], xPDOTransport::NATIVE_KEY => true, 'package' => 'modx', 'validate' => $validators, 'resolve' => $resolvers ]); 

рдпрд╣ рд░рд╛рдХреНрд╖рд╕реА рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ xPDOTransport::RELATED_OBJECTS => true , рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╢реНрд░реЗрдгреА рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рддрддреНрд╡ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ (рдЪрдВрдХреНрд╕, рд╕реНрдирд┐рдкреЗрдЯреНрд╕, рдкреНрд▓рдЧрдЗрдиреНрд╕), рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╢реНрд░реЗрдгреА рдкрд░рд┐рд╡рд╣рди рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдФрд░ рд░рд┐рд╕реЛрд▓реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рдЬреЛ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
Validators рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ - рдмрд╛рдж

рдореИрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛, рд╢реНрд░реЗрдгреА рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣:

 $plugins = include $sources['data'] . 'transport.plugins.php'; if (is_array($plugins)) { $category->addMany($plugins, 'Plugins'); } 

рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВред


рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдкрдХреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓, рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдШрдЯрдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк setup-options рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдпрд╣ рддрдм рд╣реИ рдЬрдм рдмрдЯрди "рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд┐рдХрд▓реНрдк" рдХреЛ "рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ" рдХреЗ рдмрдЬрд╛рдпред рдФрд░ MODX 2.4 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдпрд╣ requires рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХреБрд▓ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдк PHP рдФрд░ MODX рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 $package->setAttribute('changelog', file_get_contents($sources['docs'] . 'changelog.txt')); $package->setAttribute('license', file_get_contents($sources['docs'] . 'license.txt')); $package->setAttribute('readme', file_get_contents($sources['docs'] . 'readme.txt')); $package->setAttribute('requires', ['php' => '>=5.4']); $package->setAttribute('setup-options', ['source' => $sources['build'] . 'setup.options.php']); 

рд╣рдо рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ


 if ($package->pack()) { $xpdo->log(xPDO::LOG_LEVEL_INFO, "Package built"); } 

рдпрд╣реА рд╣реИ, рддреИрдпрд╛рд░ рдкреИрдХреЗрдЬ рдХреЛ _packages , рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдЬрд╣рд╛рдБ рд╕реЗ рдЖрдкрдиреЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, _packages ред

рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реА рдЙрдореНрдореАрджреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреБрдЫ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╡реЗрджрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреАрддрддрд╛ рд╣реИред

рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 2 рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 git clone --recursive git@github.com:Alroniks/modx-slackify.git cd modx-slackify/_build && php build.transport.php 

рдкрд╣рд▓рд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЙрд╕рдХреЗ рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХрд╛ рдХреНрд▓реЛрдирд┐рдВрдЧ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - --recursive , рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдШрдЯрдХ рдХреЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдЧрд╛, рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛ рд╕рдмрдореЛрдбреНрдпреВрд▓реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред

рджреВрд╕рд░рд╛ рд╕реАрдзреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рддреИрдпрд╛рд░ package-1.0.0-pl.transport.zip _packages рдХреЛ _packages рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВред

рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЧрд┐рдЯрд╣рдм рдореЗрдВ рдПрдХ рд╣реБрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдЧрд╛ рдЬреЛ рдкреИрдХреЗрдЬ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЙрди рд╕рднреА рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИрдВред рдпрд╛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рдЙрд╕ рд╕рдордп рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рдХреЙрдлреА рдмрдирд╛рдПрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛ рдерд╛ред рдпрд╛ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреЗрд╕реНрдЯ рд░рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдирдХрд┐рдВрд╕ рдпрд╛ рдЯреНрд░реИрд╡рд┐рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдм рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ, рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

PS рдкрд╛рд╕ рд╕реЗ рдордд рдЧреБрдЬрд░реЛ , GitHub рдкрд░ рдПрдХ Slackify рд╕реНрдЯрд╛рд░ рд░рдЦреЛ , рдХреГрдкрдпрд╛ред

Source: https://habr.com/ru/post/hi439420/


All Articles