рд╣рдо рд╕рд╛рдЗрдЯ рдкрд░ ActiveRecord рдХреЛ рдлрд╛рд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ

рдкрд░рд┐рдЪрдп

рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЬрдЯрд┐рд▓ рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдбреЗрдЯрд╛рдмреЗрд╕) рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕рд╛рдЗрдЯ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдврд╛рдВрдЪреЗ рдпрд╛ CMS рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ORM рддрдВрддреНрд░ (рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ - рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ, рд╡рд┐рдХреА рдкрд░ рдЕрдзрд┐рдХ) рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕рд░рд▓ ORM ActiveRecord рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

ActiveRecord рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдШрдЯрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреБрдирд┐рдпрд╛рджреА рд╡рд░реНрдЧреЛрдВ (рдореЙрдбрд▓, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрдХ, рдЖрджрд┐) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреАрдмреАрдПрдордПрд╕ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдПрдХ ActiveRecord.php рдЖрд░рдВрднреАрдХрд░рдг рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдСрдЯреЛрд▓реЙрдб рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред рд╕рднреА рд╡рд░реНрдЧ ActiveRecord рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╣рд░ рдмрд╛рд░ рдлреИрд▓реА \ ActiveRecord \ рдореЙрдбрд▓ рдЬреИрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдпрд╛ рдЙрдкрдпреЛрдЧ ActiveRecord рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрд╡рд░рдг рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред ActiveRecordред рдпрд╣ AR рдШрдЯрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╣рдорд╛рд░реЗ ORM рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╕рднреА AR рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ ActiveRecord.php рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ \ ActiveRecord \ Model (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕ рдмреБрдХ рдПрдХреНрд╕рдЯреЗрдХреНрдЯреЗрдб \ ActiveRecord \ рдореЙрдбрд▓ {}) рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВ, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди:

$connections = array( 'development' => 'mysql://invalid', 'production' => 'mysql://test:test@127.0.0.1/test' ); ActiveRecord\Config::initialize(function($cfg) use ($connections) { $cfg->set_model_directory('.'); $cfg->set_connections($connections); }); 


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

рдПрдХ рдПрдЖрд░ рд░реИрдкрд░ рдмрдирд╛рдирд╛

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

рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ 2 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рд╣рдо рдЬрд┐рд╕реЗ \ ActiveRecord \ Model рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдореБрдЦреНрдп рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо AR рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред 2 рдХрдХреНрд╖рд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБ:

 //Orm.php class Orm { /** * array $models_    ,          ,     *     [ ]=>array('path'=>       , 'namespace'=>       ) */ public $models_ = array(); /** *    PHP,   ,    ,   * * @param null $name */ function __construct($name = null) { if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300) die('PHP ActiveRecord requires PHP 5.3 or higher'); define('PHP_ACTIVERECORD_VERSION_ID', '1.0'); include_once 'lib/Singleton.php'; include_once 'lib/Config.php'; include_once 'lib/Utils.php'; include_once 'lib/DateTime.php'; include_once 'lib/Model.php'; include_once 'lib/Table.php'; include_once 'lib/ConnectionManager.php'; include_once 'lib/Connection.php'; include_once 'lib/SQLBuilder.php'; include_once 'lib/Reflections.php'; include_once 'lib/Inflector.php'; include_once 'lib/CallBack.php'; include_once 'lib/Exceptions.php'; spl_autoload_register(__NAMESPACE__ . '\ActiveRecord::activerecord_autoload'); Config::initialize(function ($cfg) { $cfg->set_connections(array( 'development' => Configuration::$dbtype . "://" . Configuration::$db_user . ":" . Configuration::$db_password . "@" . Configuration::$db_host . "/" . Configuration::$db_name )); /*     ,       AR,    "Ymd H:i:s T"      ,         datetime  MySQL */ $cfg->set_date_format("Ymd H:i:s"); }); } /**      ,     ,      FALSE */ public function getModel($model) { $config = Config::instance(); if (array_key_exists($model, $this->models_)) { $config->set_model_directory($this->models_[$model]['path']); if( $this->models_[$model]['namespace'] ) $class = "\\" . $this->models_[$model]['namespace'] . "\\" . $model; else $class = $model; return new $class; } else { return false; } } /**   ,       getModel() $class_name   ,      NEW   getModel() */ public static function activerecord_autoload($class_name) { $root = Config::instance()->get_model_directory(); $class_name = explode('\\', $class_name); $class_name = end($class_name); $file = $root . $class_name . ".php"; if (file_exists($file)) require $file; } } //Model.php class Model extends \ActiveRecord\Model { /*    ,      ,         */ static $table_name = 'simple_name'; //      static $primary_key = 'id'; //      static $connection = 'production'; //    ,   SQL    - db.table_name static $db = 'test'; /* *            */ } 


рдореЙрдбрд▓ рд╡рд░реНрдЧ рд╕реЗ, рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рднреА рдореЙрдбрд▓ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреЗред рдпрд╣ рднреА рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

 class Configuration{ /*.....*/ /** * $db_host       */ static $db_host = 'localhost'; /** * $db_user    */ static $db_user = 'root'; /** * $db_password    */ static $db_password = 'root'; /** * $db_name    */ static $db_name = 'db_name'; /** * $dbtype     */ static $dbtype = 'mysql'; /*.....*/ } 


рдСрд░рдо рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ (рдпрд╣ рдХреЛрдб ActiveRecord.php рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдордп рдкреНрд░рд╛рд░реВрдк рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛рдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ AR рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рддрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ 2000-02-03 16:23:27 MSK, рдЕрд░реНрдерд╛рддреНред рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдПрдЖрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдирд╣реАрдВ, рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
/lib/Column.php рдХрд╛рд╕реНрдЯ рд╡рд┐рдзрд┐
 return new DateTime($value->format('Ymd H:i:s T')) 

рдкрд░
 return new DateTime($value->format(Config::instance()->get_date_format())) 

рдЗрд╕реА рддрд░рд╣, /lib/Connection.php рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, datetime_to_string () рд╡рд┐рдзрд┐рдпрд╛рдБ string_to_datetime (), рдФрд░ /lib/Model.php рдЕрд╕рд╛рдЗрди_attribute () рд╡рд┐рдзрд┐ред

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

 <?php class Controller{ public static $ORM; function __construct(){ $this->loadOrm(); } function loadOrm(){ include 'Orm.php' self::$ORM = new Orm(); self::_models = array('Book'=>array('path'=>'models', 'namespace'=>__NAMESPACE__)); } } new Controller; ?> //            <?php $model = Controller::$ORM ->getModel('Book'); $books = $model->all(); foreach($books as $book) echo $book->author; 


рдмреЗрд╢рдХ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЕрднреА рднреА рд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдУрдЖрд░рдПрдо рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рддрд░реАрдХреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЬрдм рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдлрд┐рд░ рдУрд░реНрдо :: getModel ('рдореЙрдбрд▓ рдирд╛рдо)' рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд░реЗрдВ;
рдПрдЖрд░ рдПрдХ рдмрд▓реНрдХрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд▓рдЪреАрд▓рд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдорд╛рдирдХ рд╕реАрдЖрд░рдпреВрдбреА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЯреЗрдмрд▓ рд░рд┐рд╢реНрддреЛрдВ (рдЬрдЯрд┐рд▓ рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рд╢реНрддреЛрдВ рд╕рд╣рд┐рдд), SQL рдкреНрд░рд╢реНрдиреЛрдВ, рд╕рддреНрдпрд╛рдкрди, рд░реВрдкрд╛рдВрддрд░рдг, рдЖрджрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП SQLBuilder рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

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

рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдареЛрдХрд░ рдЦрд╛рдиреА рдкрдбрд╝реА, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╡рд┐рд╖рдп рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ ActiveRecord рдХреЗ рдПрдХ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

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


All Articles