рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпред рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рджреЗрдВ

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

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

рдпрджреНрдпрдкрд┐ рдпрд╣ рдЖрд▓реЗрдЦ PHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЕрд╡рдзрд╛рд░рдгрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред


рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ


рдЖрдорддреМрд░ рдкрд░, рдХреЛрдб рджреВрд╕рд░реЗ рдХреЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$foo = substr($bar, 42); 

рдпрд╣ рдХреЛрдб $bar рдЪрд░ рдФрд░ substr рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред $bar рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реИ, рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдФрд░ рдЙрд╕реА рджрд╛рдпрд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред substr рдПрдХ PHP рдХреЛрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред

рдЕрдм, рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 $foo = normalizer_normalize($bar); 

normalizer_normalize рдПрдХ Intl рдкреИрдХреЗрдЬ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕реЗ 5.3 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ PHP рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рдХреЛрдб рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреИрдХреЗрдЬ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЕрдм, рдпрд╣ рд╡рд┐рдХрд▓реНрдк:

 class Foo { public static function bar() { return Database::fetchAll("SELECT * FROM `foo` WHERE `bar` = 'baz'"); } } 

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

 Database::connect('localhost', 'user', 'password'); $bar = Foo::bar(); 

Foo::bar рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ Database рдФрд░ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк Database рдмрд┐рдирд╛ Foo рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ Database рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм Database::fetchAll рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд Database::fetchAll ? рдПрдХ рддрд░рд╣ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 class Database { protected static $connection; public static function connect() { if (!self::$connection) { $credentials = include 'config/database.php'; self::$connection = some_database_adapter($credentials['host'], $credentials['user'], $credentials['password']); } } public static function fetchAll($query) { self::connect(); //  self::$connection... // here be dragons... return $data; } } '; class Database { protected static $connection; public static function connect() { if (!self::$connection) { $credentials = include 'config/database.php'; self::$connection = some_database_adapter($credentials['host'], $credentials['user'], $credentials['password']); } } public static function fetchAll($query) { self::connect(); //  self::$connection... // here be dragons... return $data; } } 

Database::fetchAll рдХреЙрд▓ рдХрд░рддреЗ Database::fetchAll , рд╣рдо connect рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ Database рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ config/database.php ред рдпрджрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдФрд░ рдЖрдЧреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред Database рд╡рд░реНрдЧ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмрдБрдзрд╛ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреЙрдо рдмрдврд╝ рдЬрд╛рддреА рд╣реИред Foo рди рдХреЗрд╡рд▓ Database рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред Database рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Foo рд╡рд░реНрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдб рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╛рдЬреНрдп рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝рд╛ рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд╣реАрдВ рднреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреБрдЫ рдкрд░рд┐рдЪрд┐рдд ...


рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ? рдЖрдЗрдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 function database_connect() { global $database_connection; if (!$database_connection) { $credentials = include 'config/database.php'; $database_connection = some_database_adapter($credentials['host'], $credentials['user'], $credentials['password']); } } function database_fetch_all($query) { global $database_connection; database_connect(); //  $database_connection... // ... return $data; } function foo_bar() { return database_fetch_all("SELECT * FROM `foo` WHERE `bar` = 'baz'"); } 'рд╣реЛрд╕реНрдЯ'], $ рд╕рд╛рдЦ [ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛'], $ рд╕рд╛рдЦ [ 'рдкрд╛рд╕рд╡рд░реНрдб']); function database_connect() { global $database_connection; if (!$database_connection) { $credentials = include 'config/database.php'; $database_connection = some_database_adapter($credentials['host'], $credentials['user'], $credentials['password']); } } function database_fetch_all($query) { global $database_connection; database_connect(); //  $database_connection... // ... return $data; } function foo_bar() { return database_fetch_all("SELECT * FROM `foo` WHERE `bar` = 'baz'"); } 

рдЬрд╛рдиреЗрдВ 10 рдЕрдВрддрд░ ...
рд╕рдВрдХреЗрдд: рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ Database::$connection рдХреА рджреГрд╢реНрдпрддрд╛ Database::$connection рдФрд░ $database_connection ред

рдХрдХреНрд╖рд╛-рдЙрдиреНрдореБрдЦ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдХреЗрд╡рд▓ Database рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреЛрдб рдореЗрдВ рдпрд╣ рдЪрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИред рдХреЛрдб рдПрдХ рд╣реА рдирд┐рд░реНрднрд░рддрд╛, рд╕рдВрдЪрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╣реИ, рдФрд░ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред $database_connection рдФрд░ Database::$connection рдмреАрдЪ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рджреЛрдиреЛрдВ рдЪрд░ рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реИред рдХреНрд▓рд╛рд╕ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдмреЗрд╢рдХ, рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рднреА рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

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

рдЗрдЧреНрдирд┐рд╢рди рдХреБрдВрдЬреА рдЪрд╛рд▓реВ рдХрд░реЗрдВ


рдЕрдм, OOP рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП Foo рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:

 class Foo { protected $database; public function __construct(Database $database) { $this->database = $database; } public function bar() { return $this->database->fetchAll("SELECT * FROM `foo` WHERE `bar` = 'baz'"); } } 

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

 class Database { protected $connection; public function __construct($host, $user, $password) { $this->connection = some_database_adapter($host, $user, $password); if (!$this->connection) { throw new Exception("Couldn't connect to database"); } } public function fetchAll($query) { //  $this->connection ... // ... return $data; } } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред Database::fetchAll рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред Database::fetchAll рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреНрд▓рд╛рд╕ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк Database::fetchAll , рддреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ Foo рдХреЗрд╡рд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ Database $database рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ Database $database рдХрдиреЗрдХреНрд╢рди рд╣реЛрдЧрд╛ред

рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреЗ рдмрд┐рдирд╛ Foo , рдЖрдк рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ Foo::bar ред Database рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛, рдЖрдк Foo рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред рдорд╛рдиреНрдп рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛, рдЖрдк Database рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред

рдЖрдк рдмрд╕ рдЕрдЧрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╢рд░реНрдд рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХреНрд▓рд╛рд╕-рдУрд░рд┐рдПрдВрдЯреЗрдб рдХреЛрдб рд╕реЗ рдХрд░реЗрдВ: рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп Foo::bar рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ Database рдХреНрд▓рд╛рд╕ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред Database::fetchAll рдХрд┐рд╕реА рднреА рд╕рдордп Database::fetchAll рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрдЧреА рдЬрдм config/database.php рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред Database::connect рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЕрдиреНрдп рд╕рднреА рдСрдкрд░реЗрд╢рди рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред

рдЗрдВрдЬреЗрдХреНрд╢рди


рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╕реЗ рдЗрд╕реЗ рдЖрдЗрдП рдирдЬрд╝рд░ Foo ред рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг:

 $bar = foo_bar(); 

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

 $bar = foo_bar(); if (!$bar) { // -    $bar,  ! } else { //  ,   } 

foo_bar рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ foo_bar , рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЯреВрдЯ рдЧрдпрд╛ред

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдПрдХ рд╡рд░реНрдЧ-рдЙрдиреНрдореБрдЦ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

 $bar = Foo::bar(); if (!$bar) { // -    $bar,  ! } else { //  ,   } 

рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВред рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдорд╛рди рд╣реИ, рдЕрд░реНрдерд╛рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕реНрд░реЛрдд рдвреВрдВрдврдирд╛ рднреА рдХрдард┐рди рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╕рд┐рд░реНрдл рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

рдЕрдм OOP:

 $foo = new Foo; $bar = $foo->bar(); 

рдкреАрдПрдЪрдкреА рдПрдХ рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧреА рдЬрдм рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ new Foo ред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдиреЗ рдмрддрд╛рдпрд╛ Foo рдХреА рдПрдХ рдкреНрд░рддрд┐ рдХреА рдЬрд░реВрд░рдд рд╣реИ Database , рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред

 $db = new Database; $foo = new Foo($db); $bar = $foo->bar(); 

PHP рдлрд┐рд░ рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ Database::__construct рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред

 $db = new Database('localhost', 'user', 'password'); $foo = new Foo($db); $bar = $foo->bar(); 

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

рд▓реЗрдХрд┐рди рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЧрд▓рдд рд╣реИрдВ рдпрд╛ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, new Database(...) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреАред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ $foo->bar() рдХреЙрд▓ рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рдиреА рд╣реИ (рдмреЗрд╢рдХ, рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд▓реМрдЯ рдЖрдпрд╛ рд╣реИ)ред рдпрджрд┐ рдХрд┐рд╕реА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рдж рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред

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

рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред Foo рдХреЛ рдПрдХ Database рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ Database рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рд╣рдо Foo::bar рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ - рдЕрдм рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╡рд┐рдзрд┐, рдмрд╛рд░реА рдореЗрдВ, рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХреА Database::fetchAll ред рдЕрдм рд╕рд╛рд░реА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЙрд╕ рдкрд░ рд╣реИ рдФрд░ рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рдХреБрдЫ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ... рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдЖрдПрдЧрд╛ рдФрд░ рдХрд╣рд╛рдВред

рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕рдХреА рддрд╛рдХрдд рд╣реИред Foo::bar рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдареАрдХ рд╣реИ, рддреЛ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рджреЗрдВред рдХреНрдпрд╛ рдХрдиреЗрдХреНрд╢рди? рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ Database рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдерд╛ред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреА рд╢рдХреНрддрд┐ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

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



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



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

рд╕реНрдереИрддрд┐рдХ рд╕рджрд╕реНрдп


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

 class Database { protected static $types = array( 'int' => array('internalType' => 'Integer', 'precision' => 0, ...), 'string' => array('internalType' => 'String', 'encoding' => 'utf-8', ...), ... ) } 

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

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

рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдХрдард┐рди рдирд┐рд░реНрднрд░рддрд╛ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк Foo::bar() , рддреЛ рдХреЛрдб рдХреА рдпрд╣ рд░реЗрдЦрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ Foo рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ:

  1. рдирд┐рд░реНрднрд░рддрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрд▓ рдЖрдВрддрд░рд┐рдХ рд╣реИ рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

     class Database { ... public function __construct($host, $user, $password) { $this->connection = new PDO(...); } ... } 

    рдпрд╣рд╛рдБ Database рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ - PDO рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди PDO рдордВрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдпрд╣ PHP рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд░реНрдЧ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

  2. рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ред рдмреНрд▓реВрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

     class BloomFilter { ... public function __construct($m, $k) { ... } public static function getK($m, $n) { return ceil(($m / $n) * log(2)); } ... } 

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

     $m = 10000; $n = 2000; $b = new BloomFilter($m, BloomFilter::getK($m, $n)); 

    рдпрд╣ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд░реНрдЧ рдкрд░ рд╣реА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

  3. рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг PHP рдореЗрдВ рдирд┐рд░реНрдорд┐рдд DateTime рд╡рд░реНрдЧ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

     $date = new DateTime('2012-11-04'); $date = DateTime::createFromFormat('dm-Y', '04-11-2012'); 

    рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо DateTime рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ DateTime рдФрд░ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЛрдб DateTime рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрддрд╛ рд╣реИред рд╕реНрдЯреИрдЯрд┐рдХ DateTime::createFromFormat рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ DateTime::createFromFormat рд╣реИ рдЬреЛ new DateTime DateTime::createFromFormat рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рддреБрдо рдХрд╣рд╛рдБ рдПрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ new Class , рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Class::method() рдХреЛрдИ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред

рд╕реНрдереИрддрд┐рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдореВрд░реНрдд рдХрд╛ рд╡рдЪрди


рд╡реНрдпрд╕рдиреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЙрдкрджреНрд░рд╡? рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛! рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝рддреА рд╣реИред рдФрд░ рдЕрдореВрд░реНрддрддрд╛ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рдХреБрдВрдЬреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ Application рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ User , рдЬреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рджрд╕реНрдп рд╣реИред рдЬреЛ Database рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред Database рд╡рд░реНрдЧ рдХреЛ рдПрдХ DatabaseDriver рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред DatabaseDriver рдХреЛ рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрджрд┐ рдЖрдк рдмрд╕ Application::start() рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ User::getData() рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЬреЛ DB рдХреЛ User::getData() рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ User::getData() , рддреЛ рдЖрдкрдХреЛ рдПрдХ рднрдпрд╛рдирдХ рдЧрдбрд╝рдмрдбрд╝ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреНрдпрд╛ Application::start() рдХреЙрд▓ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧреАред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░ рдпрд╣ рдХрд┐ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ Application::start() - рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╡рд░реНрдЧ рдХреЛрдб рд╣реИ рдХрд┐ рд╡рд╣ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдХреЛрдб рд╣реИ рдХрд┐ рдЙрди рд╡рд░реНрдЧреЛрдВ vyzyzvayut ... рдШрд░ рдореЗрдВ рд╣реИ рдХрд┐ рдЬреИрдХ рдмрдирд╛рдпрд╛ vyzyzvaet рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

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

 function (Database $database) { ... } 

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

рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛, рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦрдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред Database рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдпрд╛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБ-рдкрд░рдд рд░рд╛рдХреНрд╖рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЫреЛрдЯреЗ рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд░рд╛рдХреНрд╖рд╕ рдореЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк Database рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рдВрд╢рдЬ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдкрдХреЗ function (Database $database) рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ function (Database $database) рдЬрдм рддрдХ function (Database $database) рдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдПрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдкрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реЛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╕рд┐рд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХрдХреНрд╖рд╛-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдмреЗрд╡рдХреВрдл рд╣реИред OOP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред

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


All Articles