PHP рдиреЗрдорд╕реНрдкреЗрд╕ - рдпрд╣ рдХреИрд╕реЗ рдПрдХ рд╣реА рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП?

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

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рдПрдВред рднрд▓реЗ рд╣реА рдХрд┐рддрдирд╛ рднреА рджреБрдЦрдж рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдмреНрд▓реЙрдЧ рд╣реЛрдиреЗ рджреЗрдВред

рдЫрд╡рд┐

рд╣рдордиреЗ рдореБрдЦреНрдп рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ, рдЬрд╣рд╛рдВ:

Index.php рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
<?php use Blog\Blog as Blog; /* * main application */ define ("APP_PATH", "/home/oleg/www/viper.dev/"); define ("VIEW_PATH", "/home/oleg/www/viper.dev/Blog/Views/"); spl_autoload_register(function ($class) { require_once str_replace('\\', '/', $class). '.php'; }); $blog = new Blog(); $blog->run(); /* * end of index.php */ 


рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкрде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдСрдЯреЛрд▓реИрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВред
рдСрдЯреЛрд▓реИрдбрд░ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдЧ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Blog / Post \ Services \ View рд╡рд░реНрдЧ рдХреЛ рдмреНрд▓реЙрдЧ / рдкреЛрд╕реНрдЯ / рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЪрд╛рд╣рд┐рдП рд╣реЛрдЧрд╛ред
рдФрд░ рдпрд╣рд╛рдБ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдмреИрдардХ рд╣реИред
рдЬрдм index.php рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо Blog рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдЧ Blog / Blog.php рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдЙрд╕реЗ рджреЗрдЦреЗрдВред

 <?php namespace Blog; use Blog\Post\Post as Post; class Blog { public $post; public function __construct() { $this->post = new Post(); } public function run() { $this->post->view->all(); } }//end class Blog 

рдмреНрд▓реЙрдЧ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдкреЛрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ Namespace Blog \ Post рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдСрдЯреЛрд▓реИрдбрд░ рдЙрд╕реЗ Blog / Post / Post.php рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,
 <?php namespace Blog\Post; use Blog\Post\Services\View as View; class Post { public $view; public function __construct() { $this->view = new View(); } }//end class Post 

рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реНрд╡рдпрдВ - Blog \ Post \ Entities \ PostEntity.php
 <?php namespace Blog\Post\Entities; class PostEntity { public $id; public $title; public $body; }//end class 

- рд╡реЗ рд╕реЗрд╡рд╛рдПрдБ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреА рд╣реИрдВ - Blog \ Post \ Services \ View.php (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ)
 <?php namespace Blog\Post\Services; use Blog\Utility\Contemplate as Contemplate; use Blog\Post\Repositories\Db as DB; class View { public $db; public function __construct() { $this->db = new DB(); }//end __construct public function all() { $posts = $this->db->survey(); Contemplate::compose(array( 'header' => 'header', 'main' => 'main', 'footer' => 'footer', ), array( 'posts' => $posts, 'title' => 'Viper site', )); } }//end class PostView 

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА - Blog \ Post \ Repositories \ DB.php - рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрддрд▓реЗ, рд╕реБрдВрджрд░ рдореЙрдбрд▓,
рдмрд╕ рдЗрд╕реЗ рд▓рд╛рдУ, рдЗрд╕реЗ рд▓рд╛рдУ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВ!
 <?php namespace Blog\Post\Repositories; use PDO as PDO; class DB { private $dbh; public function __construct() { $user = 'user'; $pass = 'parole'; try { $this->dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array( PDO::ATTR_PERSISTENT => true )); } catch (PDOException $e) { echo "Error!: " . $e->getMessage() . "<br/>"; die(); } }//end __construct public function survey() { $query_view = $this->dbh->prepare('SELECT * from posts'); $query_view->execute(); return $query_view->fetchAll(PDO::FETCH_CLASS, "Blog\Post\Entities\PostEntity"); }//end survey }//end class Db 

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

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

рд▓реЗрдЦ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ, рдЯреЗрд▓рд░ рдУрд╡реЗрд▓рд╡реЗрд▓, рд▓рд╛рд░рд╡реЗрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
GitHub рдкрд░ рдЙрджрд╛рд╣рд░рдг рд╕реНрд░реЛрдд рдХрд╛ рдкрддрд╛: https://github.com/oleg578/PHPNamespaceModel

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


All Articles