RedBeanPHP - CodeFirst PHP рдлреНрд░реЗрдорд╡рд░реНрдХ

RedBeanPHP
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк ORM рдлреНрд░реЗрдорд╡рд░реНрдХ RedBeanPHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдордХреНрдЦреА рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рджреЛ рдкреИрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореЗрд░реА рдХрд╣рд╛рдиреА рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдореЙрдбрд▓ рд╣реЛрдВрдЧреЗред рддреАрд╕рд░реЗ рдореЗрдВ - рдврд╛рдВрдЪреЗ рдХреЗ рддрд░реНрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ред

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

рдореВрд▓


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

рд╢реБрд░реБрдЖрдд


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

require('rb.php'); 

рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдЖрдЗрдП рдЕрдВрджрд░ рджреЗрдЦреЗрдВ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рдЬрди 260 KB рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЧрдП рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред GitHub рдкрд░, рдЖрдк рд▓рдЧрднрдЧ 40 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд┐рдпрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 require('redbean.inc.php'); 

рд╕рдВрд░рдЪрдирд╛


рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреАрдбреАрдУ рдФрд░ рдУрд░реЗрдХрд▓ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ RedBeanPHP рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: MySQL 5, SQLite, PostgreSQL, CUBRID, Oracleред рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди rb.php рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ GitHub рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, RedBean_Driver рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ QueryWriter рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд░реНрдЧ рд╣реИред рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рдЕрдкрдиреА рд╢реНрд░реЗрдгреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдХреЛрдб рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 class RedBean_Logger_Default implements RedBean_Logger { public function log() { if (func_num_args() > 0) { foreach (func_get_args() as $argument) { if (is_array($argument)) echo print_r($argument,true); else echo $argument; echo "<br>\n"; } } } } 

PHPDocs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВред рдЖрдИрдбреАрдИ рдореЗрдВ рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЯреЗрдмрд▓ рдХреЗ рдХреЙрд▓рдо рд╕реЗ рдЬреБрдбрд╝реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдХреЗ рдЙрдкрдпреЛрдЧ


рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреАрдбреАрдУ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 R::setup('mysql:host=localhost;dbname=mydatabase', 'user','password'); //mysql R::setup('pgsql:host=localhost;dbname=mydatabase', 'user','password'); //postgresql R::setup('sqlite:/tmp/dbfile.txt', 'user','password'); //sqlite 

рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдФрд░ рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрджрд┐ рдпрд╣ рдЧрд╛рдпрдм рд╣реИ (рдХреЗрд╡рд▓ рджреНрд░рд╡ рдореЛрдб рдореЗрдВ):

 //   (bean)    book $book = R::dispense( 'book' ); //   ,          $book->title = 'Gifted Programmers'; $book->author = 'Charles Xavier'; $book->price = 99.99; //,   id   $id = R::store($book); 

рдФрд░ рдЗрд╕рд▓рд┐рдП рдореМрдЬреВрджрд╛ "рдмреАрди" рднрд░реА рд╣реБрдИ рд╣реИред

 $book = R::load('book', $id); 

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

рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рд░реВрдкрд░реЗрдЦрд╛ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреА рд╣реИред рдЗрд╕ рддрд░реНрдХ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдП рдореИрдВ рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдмреАрди рдХреА рдЦреЛрдЬ WHERE рдХреНрд▓реЙрдЬ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХреА рдЧрдИ рд╣реИ:

 $needles = R::find('needle', ' haystack = :haystack ORDER BY :sortorder', array( ':sortorder'=>$sortorder, ':haystack'=>$haystack ) ); 

рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ, рдЖрдк ORDER BY рдФрд░ LIMIT рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдЪрд╛рд░


рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рд╣реИред RedBeanPHP рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

 //  bean    village $village = R::dispense('village'); //  bean'    building list($mill,$tavern) = R::dispense('building',2); //      bean     own $village->ownBuilding = array($mill,$tavern); R::store($village); 

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

рдпрджрд┐ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдХреЗ рджреВрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореВрд▓ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

 $village = $mill->village 

RedBeanPHP "рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рдордп рд╣реЛрдЧрд╛ред

 //    building   $village = R::load('village',$id); //    building $buildings = $village->ownBuilding; 

рд╕реНрд╡рдпрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 $village->ownBuilding[$id] = $house; 

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

 unset($village->ownBuilding[$someID]); R::store($village); 

рдПрдХ рд╕реЗрдо рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реА рдореВрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

 R::trash( $book ); //     R::trashAll( $books ); 

рддрд╛рд▓рд┐рдХрд╛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 R::wipe( 'book' ); 

рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╛рдЭрд╛ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

 $army = R::dispense('army'); $village->sharedArmy[] = $army; $village2->sharedArmy[] = $army; 

рдирддреАрдЬрддрди, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд░реНрдореА_рд╡рд┐рд▓реЗрдЬ рдЯреЗрдмрд▓ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА рдФрд░ рд▓рд┐рдВрдХ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдЕрдиреНрдпрдерд╛, рд╕рд╛рдЭрд╛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рдорд╛рди рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдмреАрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 // $village   village $village = $building->village 

рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдмреАрди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

 list($teacher,$student) = R::dispense('person',2); $project->student = $student; $project->teacher = $teacher; 

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

 $teacher = $project->fetchAs('person')->teacher; 

рдкреЗрдбрд╝

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

 //$subbean  $bean   category $subbean = R::dispense('category'); $subbean->title = $title; $subbean->url = $url; $subbean->parent = $bean; R::store($subbean); 

рдкреЗрд░реЗрдВрдЯ_рдб рдлрд╝реАрд▓реНрдб рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдмрдВрдз рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред

рдЧрддрд┐


рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ 2 рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╣реИрдВ: рдлреНрд▓реБрдЗрдб рдФрд░ рдлреНрд░реЛрдЬрдиред рдлреНрд▓реВрдЗрдб рдореЛрдб рдореЗрдВ, RedBeanPHP рдЖрдкрдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдлреНрд░реЛрдЬрди рдореЛрдб рд╕реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдХрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 R::freeze( true ); 

рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрд░реЛрдз


ORM SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

 R::exec( 'update page set title="test" where id=1' ); 

рдПрдХ рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░ рднреА рд╣реИ:

 R::$f->begin() ->select('*')->from('bean') ->where(' field1 = ? ')->put('a')->get('row'); 


рдореЙрдбрд▓ рдЕрд╡рд▓реЛрдХрди


рдореИрдВ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдереЛрдбрд╝рд╛ рднрд╛рдЧреВрдБрдЧрд╛ рдФрд░ рд╡рд░реНрдгрди рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдореЙрдбрд▓ RedBeanPHP рдореЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдк рдмреАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореЙрдбрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ред рдЬрдм рдЖрдкрдХреЛ рдПрдХ рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк Model_User рдХреЗ рд▓рд┐рдП, Model_BeanName рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдмреАрди рдФрд░ рдореЙрдбрд▓ рдХреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИред

 $user = R::dispence('user'); $user->modelMethod(); 

рдпрд╣реА рд╣реИ, рд╣рдо ActiveRecord рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред рд▓реЗрдЦрдХ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ FUSE рдХрд╣рддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рджреИрдирд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ:

рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо RedBeanPHP рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ:


рд╕рд╛рдзрди


рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ RedBeanPHP

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


All Articles