From 82982db5830814dd6530dd892f5ae0198fbf8e05 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Wed, 29 Oct 2014 17:24:58 +0200 Subject: [PATCH 1/9] first commit --- .gitignore | 3 +++ composer.json | 7 ++++++ composer.lock | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 .gitignore create mode 100644 composer.json create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..932b431 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~ +.idea/ +vendor/ diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..2332dc9 --- /dev/null +++ b/composer.json @@ -0,0 +1,7 @@ +{ + +"require": { +"symfony/http-foundation": "2.5.6" + +} +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..e2cc05c --- /dev/null +++ b/composer.lock @@ -0,0 +1,70 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "40a03d2989f3d2b4e64464e01e948d19", + "packages": [ + { + "name": "symfony/http-foundation", + "version": "v2.5.6", + "target-dir": "Symfony/Component/HttpFoundation", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpFoundation.git", + "reference": "56111fc8ba8bcad93d367532babecc6ce17f66ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/56111fc8ba8bcad93d367532babecc6ce17f66ce", + "reference": "56111fc8ba8bcad93d367532babecc6ce17f66ce", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/expression-language": "~2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "classmap": [ + "Symfony/Component/HttpFoundation/Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "http://symfony.com", + "time": "2014-10-24 05:49:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "platform": [], + "platform-dev": [] +} From aed2718e7eecf0e00efc85caada6faaadac13c5a Mon Sep 17 00:00:00 2001 From: shubaivan Date: Wed, 29 Oct 2014 23:12:01 +0200 Subject: [PATCH 2/9] add tim --- src/mvc/tim/AbstractFootballTim.php | 54 +++++++++++++++++++++++++++++ src/mvc/tim/Barcelona.php | 23 ++++++++++++ src/mvc/tim/RealMadrid.php | 23 ++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 src/mvc/tim/AbstractFootballTim.php create mode 100644 src/mvc/tim/Barcelona.php create mode 100644 src/mvc/tim/RealMadrid.php diff --git a/src/mvc/tim/AbstractFootballTim.php b/src/mvc/tim/AbstractFootballTim.php new file mode 100644 index 0000000..60d7249 --- /dev/null +++ b/src/mvc/tim/AbstractFootballTim.php @@ -0,0 +1,54 @@ +setTrainer($trainer); + $this->setStadium($stadium); + $this->setCaptain($captain); + } + + abstract public function show(); + + /*================Set Values==================*/ + public function setTrainer($trainer) + { + $this->trainer = $trainer; + } + public function setStadium($stadium) + { + $this->stadium = $stadium; + } + public function setCaptain($captain) + { + $this->captain = $captain; + } + /*================Get Values===================*/ + public function getTrainer() + { + return $this->trainer; + } + public function getStadium() + { + return $this->stadium; + } + public function getCaptain() + { + return $this->captain; + } + +} \ No newline at end of file diff --git a/src/mvc/tim/Barcelona.php b/src/mvc/tim/Barcelona.php new file mode 100644 index 0000000..a4abe53 --- /dev/null +++ b/src/mvc/tim/Barcelona.php @@ -0,0 +1,23 @@ +getCaptain(), $this->getStadium(), $this->getCaptain()); + } + +} \ No newline at end of file diff --git a/src/mvc/tim/RealMadrid.php b/src/mvc/tim/RealMadrid.php new file mode 100644 index 0000000..8349f01 --- /dev/null +++ b/src/mvc/tim/RealMadrid.php @@ -0,0 +1,23 @@ +getCaptain(), $this->getStadium(), $this->getCaptain()); + } + +} \ No newline at end of file From 72ba0c848d2962dffc240f430af7412ec3a5acb6 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Thu, 30 Oct 2014 15:11:35 +0200 Subject: [PATCH 3/9] add autoload --- src/mvc/index.php | 31 +++++++++++++++++++++++++++++++ src/mvc/tim/Barcelona.php | 4 ++-- src/mvc/tim/LCInterface.php | 13 +++++++++++++ src/mvc/tim/RealMadrid.php | 8 ++++++-- 4 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 src/mvc/index.php create mode 100644 src/mvc/tim/LCInterface.php diff --git a/src/mvc/index.php b/src/mvc/index.php new file mode 100644 index 0000000..0a0eea8 --- /dev/null +++ b/src/mvc/index.php @@ -0,0 +1,31 @@ +show().'
'; + +$RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); +echo $RealMadrid->show().'
'; +echo ' Champions League'. $RealMadrid->LC().'
'; + +$response = new Response(); + +$response->setContent('

Hello world!

'); +$response->setStatusCode(200); +$response->headers->set('Content-Type', 'text/html'); + +// prints the HTTP headers followed by the content +$response->send(); \ No newline at end of file diff --git a/src/mvc/tim/Barcelona.php b/src/mvc/tim/Barcelona.php index a4abe53..38a9a0c 100644 --- a/src/mvc/tim/Barcelona.php +++ b/src/mvc/tim/Barcelona.php @@ -6,7 +6,7 @@ * Time: 22:34 */ -namespace mvc\tim; +namespace tim\barcelona; class Barcelona extends AbstractFootballTim @@ -17,7 +17,7 @@ function __construct($trainer, $stadium, $captain) } public function show() { - return sprintf('great %s play in %s his %s',$this->getCaptain(), $this->getStadium(), $this->getCaptain()); + return sprintf('trainer %s stadium in %s captain %s',$this->getTrainer(), $this->getStadium(), $this->getCaptain()); } } \ No newline at end of file diff --git a/src/mvc/tim/LCInterface.php b/src/mvc/tim/LCInterface.php new file mode 100644 index 0000000..01638da --- /dev/null +++ b/src/mvc/tim/LCInterface.php @@ -0,0 +1,13 @@ +getCaptain(), $this->getStadium(), $this->getCaptain()); + return sprintf('trainer %s stadium in %s captain %s',$this->getTrainer(), $this->getStadium(), $this->getCaptain()); + } + public function LC() + { + return "Chempion"; } } \ No newline at end of file From 54497575947f651d8130a4ca3ae226d2b46fba2c Mon Sep 17 00:00:00 2001 From: shubaivan Date: Thu, 30 Oct 2014 15:50:31 +0200 Subject: [PATCH 4/9] namespace --- composer.json | 8 ++++---- src/mvc/index.php | 2 +- src/mvc/tim/Barcelona.php | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 2332dc9..5965e7c 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { - +"autoload": { +"psr-0": {"mvc": "src/"} +}, "require": { -"symfony/http-foundation": "2.5.6" - -} +"symfony/http-foundation": "2.5.6"} } diff --git a/src/mvc/index.php b/src/mvc/index.php index 0a0eea8..bca7076 100644 --- a/src/mvc/index.php +++ b/src/mvc/index.php @@ -9,7 +9,7 @@ require_once '../../vendor/autoload.php'; -use tim\barcelona; +use mvc\tim; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; diff --git a/src/mvc/tim/Barcelona.php b/src/mvc/tim/Barcelona.php index 38a9a0c..d9aa58c 100644 --- a/src/mvc/tim/Barcelona.php +++ b/src/mvc/tim/Barcelona.php @@ -6,7 +6,7 @@ * Time: 22:34 */ -namespace tim\barcelona; +namespace mvc\tim; class Barcelona extends AbstractFootballTim From 34849691dea50520fc5937e1525567d166bb13e4 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Thu, 30 Oct 2014 16:32:48 +0200 Subject: [PATCH 5/9] add response with function --- src/mvc/index.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mvc/index.php b/src/mvc/index.php index bca7076..6463029 100644 --- a/src/mvc/index.php +++ b/src/mvc/index.php @@ -9,7 +9,8 @@ require_once '../../vendor/autoload.php'; -use mvc\tim; +use mvc\tim\Barcelona; +use mvc\tim\RealMadrid; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -19,11 +20,13 @@ $RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); echo $RealMadrid->show().'
'; -echo ' Champions League'. $RealMadrid->LC().'
'; +echo ' Champions League - '. $RealMadrid->LC().'
'; + +echo '
'; $response = new Response(); -$response->setContent('

Hello world!

'); +$response->setContent('

'.$RealMadrid->LC().'

'); $response->setStatusCode(200); $response->headers->set('Content-Type', 'text/html'); From 49b16d5d59a12adfd8ed2d4bb37d76cb14da6ffc Mon Sep 17 00:00:00 2001 From: shubaivan Date: Thu, 30 Oct 2014 23:21:50 +0200 Subject: [PATCH 6/9] some change in MVC --- .htaccess | 4 ++++ src/mvc/Controllers.php | 17 ++++++++++++++++ src/mvc/Model.php | 15 +++++++++++++++ src/mvc/Views/barcelonaView.php | Bin 0 -> 216 bytes src/mvc/index.php | 33 +++++++++++++++++++++++++++++--- 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 .htaccess create mode 100644 src/mvc/Controllers.php create mode 100644 src/mvc/Model.php create mode 100644 src/mvc/Views/barcelonaView.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..8aa6e5e --- /dev/null +++ b/.htaccess @@ -0,0 +1,4 @@ +RewriteEngine on +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^(.*)$ /src/mvc/index.php?route=$1 [L,QSA] diff --git a/src/mvc/Controllers.php b/src/mvc/Controllers.php new file mode 100644 index 0000000..1eee61f --- /dev/null +++ b/src/mvc/Controllers.php @@ -0,0 +1,17 @@ +getBarcelonaParametrs(); + require 'Views/barcelonaView.php'; + } + + +} diff --git a/src/mvc/Model.php b/src/mvc/Model.php new file mode 100644 index 0000000..3e7cb48 --- /dev/null +++ b/src/mvc/Model.php @@ -0,0 +1,15 @@ +show() . '
'; + } +} \ No newline at end of file diff --git a/src/mvc/Views/barcelonaView.php b/src/mvc/Views/barcelonaView.php new file mode 100644 index 0000000000000000000000000000000000000000..5c21383f689673934802655aaf890bc4a936d82f GIT binary patch literal 216 zcmXYqK?=e!5Jg?*6yr)L(p2lJhIF9|mj(3ztqr8m+E9bgUDbmK9ziH{(L+pbWTL{r z@c;b(hEUHV;K8O5sTMh8EhJLyb=_3H^N$zNL{MDQvr}7}i69L8g`Jgi4n<|1Wf%pa zm6R~4tCAC7Qlz=vz;vNY!SRK?xtTi-rZW%hafD=-F#5aNJpC6~R_Cn)#7Zgshow().'
'; + $RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); echo $RealMadrid->show().'
'; @@ -24,6 +23,20 @@ echo '
'; +/*$request = Request::createFromGlobals(); +// запрошенный URI (на пример /about) без query parameters +$request->getPathInfo(); + +// получаем GET и POST переменные соответственно +$request->query->get('foo'); +$request->request->get('bar'); + +// получаем экземпляр UploadedFile определяемый идентификатором foo +$request->files->get('foo'); + +$request->getMethod(); // GET, POST, PUT, DELETE, HEAD +$request->getLanguages(); // массив языков, принимаемых клиентом + $response = new Response(); $response->setContent('

'.$RealMadrid->LC().'

'); @@ -31,4 +44,18 @@ $response->headers->set('Content-Type', 'text/html'); // prints the HTTP headers followed by the content -$response->send(); \ No newline at end of file +$response->send();*/ + +$request = Request::createFromGlobals(); +$path = $request->getPathInfo(); // запрошенный URL + +if (in_array($path, array(['', '/']))) { +$response = new Response('Welcome to the homepage.'); +} elseif ($path == '/barcelona') { + $response = new Controllers(); + $response->action_barcelona(); +} else { + $response = new Response('Page not found.', 404); +} +$response->send(); + From 5e05de6c6ab1d0ca0bac8afa3a971c37a5c11bf0 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Thu, 30 Oct 2014 23:33:27 +0200 Subject: [PATCH 7/9] add namespace for change MVC --- src/mvc/Controllers.php | 2 ++ src/mvc/Model.php | 4 ++++ src/mvc/Views/barcelonaView.php | Bin 216 -> 138 bytes src/mvc/index.php | 1 + 4 files changed, 7 insertions(+) diff --git a/src/mvc/Controllers.php b/src/mvc/Controllers.php index 1eee61f..8ce0f7b 100644 --- a/src/mvc/Controllers.php +++ b/src/mvc/Controllers.php @@ -5,6 +5,8 @@ * Date: 30.10.14 * Time: 22:32 */ +namespace mvc; + class Controllers { function action_barcelona(){ diff --git a/src/mvc/Model.php b/src/mvc/Model.php index 3e7cb48..e9cc4ca 100644 --- a/src/mvc/Model.php +++ b/src/mvc/Model.php @@ -5,6 +5,10 @@ * Date: 30.10.14 * Time: 22:37 */ +namespace mvc; + +use mvc\tim\Barcelona; + class Model { public function getBarcelonaParametrs() diff --git a/src/mvc/Views/barcelonaView.php b/src/mvc/Views/barcelonaView.php index 5c21383f689673934802655aaf890bc4a936d82f..ed09fa45d748cd06d9fc3b8c904982ef5b35e690 100644 GIT binary patch delta 9 Qcmcb?*u}`mHPOEl01kWt*#H0l delta 87 zcmeBTyus+trLU#MrJ$wYT$GwvlA5BBRH+b1SArYnF|y#GPW`>26FW$GIjz0A0rmr diff --git a/src/mvc/index.php b/src/mvc/index.php index 6f57ae7..683e8f0 100644 --- a/src/mvc/index.php +++ b/src/mvc/index.php @@ -9,6 +9,7 @@ require_once '../../vendor/autoload.php'; +use mvc\Controllers; use mvc\tim\Barcelona; use mvc\tim\RealMadrid; use Symfony\Component\HttpFoundation\Request; From 227e024506b0b34ff4fe4b465be837d6440c5669 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Fri, 31 Oct 2014 20:11:12 +0200 Subject: [PATCH 8/9] change MVC, add respons in Model --- composer.json | 12 ++++--- composer.lock | 59 +++++++++++++++++++++++++++++++- src/mvc/Controllers.php | 32 +++++++++++++++-- src/mvc/Model.php | 14 +++++++- src/mvc/Views/barcelonaView.php | Bin 138 -> 90 bytes src/mvc/Views/realView.php | 11 ++++++ src/mvc/index.php | 11 +++--- 7 files changed, 124 insertions(+), 15 deletions(-) create mode 100644 src/mvc/Views/realView.php diff --git a/composer.json b/composer.json index 5965e7c..475cf36 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,9 @@ { -"autoload": { -"psr-0": {"mvc": "src/"} -}, -"require": { -"symfony/http-foundation": "2.5.6"} + "autoload": { + "psr-0": {"mvc": "src/"} + }, + "require": { + "symfony/http-foundation": "2.5.6", + "twig/twig": "1.16.2" + } } diff --git a/composer.lock b/composer.lock index e2cc05c..011ce40 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "40a03d2989f3d2b4e64464e01e948d19", + "hash": "8f30e2e51f1a3098d8f304e69816db2b", "packages": [ { "name": "symfony/http-foundation", @@ -58,6 +58,63 @@ "description": "Symfony HttpFoundation Component", "homepage": "http://symfony.com", "time": "2014-10-24 05:49:22" + }, + { + "name": "twig/twig", + "version": "v1.16.2", + "source": { + "type": "git", + "url": "https://github.com/fabpot/Twig.git", + "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fabpot/Twig/zipball/42f758d9fe2146d1f0470604fc05ee43580873fc", + "reference": "42f758d9fe2146d1f0470604fc05ee43580873fc", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.16-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://github.com/fabpot/Twig/graphs/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2014-10-17 12:53:44" } ], "packages-dev": [], diff --git a/src/mvc/Controllers.php b/src/mvc/Controllers.php index 8ce0f7b..7b0a8e8 100644 --- a/src/mvc/Controllers.php +++ b/src/mvc/Controllers.php @@ -7,13 +7,39 @@ */ namespace mvc; +use mvc\Model; +use Symfony\Component\HttpFoundation\Response; + class Controllers { - function action_barcelona(){ - $b = new Model(); - $b->getBarcelonaParametrs(); + function barcelonaAction() + { + + $b = Model::getBarcelonaParametrs(); + require 'Views/barcelonaView.php'; + + + $response = new Response(); + + return $response; + + } + + function realAction() + { + + $r = Model::getRealParametrs(); + + require 'Views/realView.php'; + + + $response = new Response(); + + return $response; + } + } diff --git a/src/mvc/Model.php b/src/mvc/Model.php index e9cc4ca..abe5cfe 100644 --- a/src/mvc/Model.php +++ b/src/mvc/Model.php @@ -8,12 +8,24 @@ namespace mvc; use mvc\tim\Barcelona; +use mvc\tim\RealMadrid; class Model { public function getBarcelonaParametrs() { $Barcelona = new Barcelona('Luis Enrique', 'Camp Nou', 'Xavier '); - $Barcelona->show() . '
'; + + $b['show'] = $Barcelona->show(); + return $b; + + } + public function getRealParametrs() + { + $Real = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); + + $r['show'] = $Real->show(); + return $r; + } } \ No newline at end of file diff --git a/src/mvc/Views/barcelonaView.php b/src/mvc/Views/barcelonaView.php index ed09fa45d748cd06d9fc3b8c904982ef5b35e690..ced30fb6b1c393b28511b50567a88432ccc0584a 100644 GIT binary patch literal 90 zcmcD?D9O#SYH~)tg1SwC-G%uV8!qg)unA~Nla9iLJs@)wZS)K5 U)U6fl?YM08A=-e(fbC}h0POZQ00000 diff --git a/src/mvc/Views/realView.php b/src/mvc/Views/realView.php new file mode 100644 index 0000000..185e79b --- /dev/null +++ b/src/mvc/Views/realView.php @@ -0,0 +1,11 @@ + + + + + +

+
    + +
+ + \ No newline at end of file diff --git a/src/mvc/index.php b/src/mvc/index.php index 683e8f0..1666197 100644 --- a/src/mvc/index.php +++ b/src/mvc/index.php @@ -13,12 +13,12 @@ use mvc\tim\Barcelona; use mvc\tim\RealMadrid; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; + use Symfony\Component\HttpFoundation\Response; -$RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); +/*$RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); echo $RealMadrid->show().'
'; echo ' Champions League - '. $RealMadrid->LC().'
'; @@ -53,9 +53,10 @@ if (in_array($path, array(['', '/']))) { $response = new Response('Welcome to the homepage.'); } elseif ($path == '/barcelona') { - $response = new Controllers(); - $response->action_barcelona(); -} else { + $response = Controllers::barcelonaAction(); +} elseif ($path == '/real') { + $response = Controllers::realAction(); +} else { $response = new Response('Page not found.', 404); } $response->send(); From 5cce9c82fbf9a7237058060b703b6e4f68cf4ba6 Mon Sep 17 00:00:00 2001 From: shubaivan Date: Mon, 3 Nov 2014 16:24:24 +0200 Subject: [PATCH 9/9] added view layer --- app/views/article.html.twig | 1 + app/views/index.html.twig | 1 + composer.json | 3 +- composer.lock | 49 ++++++++++++++++++++- index.php | 41 ++++++++++++++++++ src/mvc/Controller/ArticleController.php | 54 +++++++++++++++++++++++ src/mvc/Controller/IndexController.php | 16 +++++++ src/mvc/Controllers.php | 4 +- src/mvc/Models/Article.php | 18 ++++++++ src/mvc/index.php | 55 +++++++++--------------- 10 files changed, 203 insertions(+), 39 deletions(-) create mode 100644 app/views/article.html.twig create mode 100644 app/views/index.html.twig create mode 100644 index.php create mode 100644 src/mvc/Controller/ArticleController.php create mode 100644 src/mvc/Controller/IndexController.php create mode 100644 src/mvc/Models/Article.php diff --git a/app/views/article.html.twig b/app/views/article.html.twig new file mode 100644 index 0000000..8394e93 --- /dev/null +++ b/app/views/article.html.twig @@ -0,0 +1 @@ +{{ method|upper }} Article with "{{ articleId }}" id action \ No newline at end of file diff --git a/app/views/index.html.twig b/app/views/index.html.twig new file mode 100644 index 0000000..6769dd6 --- /dev/null +++ b/app/views/index.html.twig @@ -0,0 +1 @@ +Hello world! \ No newline at end of file diff --git a/composer.json b/composer.json index 475cf36..5d7892d 100644 --- a/composer.json +++ b/composer.json @@ -4,6 +4,7 @@ }, "require": { "symfony/http-foundation": "2.5.6", - "twig/twig": "1.16.2" + "twig/twig": "1.16.2", + "phroute/phroute": "1.4.1" } } diff --git a/composer.lock b/composer.lock index 011ce40..0973726 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,55 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "8f30e2e51f1a3098d8f304e69816db2b", + "hash": "2d380187c1420c8d316a7d61dbca04e7", "packages": [ + { + "name": "phroute/phroute", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/mrjgreen/phroute.git", + "reference": "fd2a2be54171a650df94e03077dfcb851e41d7ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mrjgreen/phroute/zipball/fd2a2be54171a650df94e03077dfcb851e41d7ec", + "reference": "fd2a2be54171a650df94e03077dfcb851e41d7ec", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "psr-0": { + "Phroute": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + }, + { + "name": "Joe Green", + "email": "joe.green.0991@gmail.com" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "time": "2014-10-19 13:33:03" + }, { "name": "symfony/http-foundation", "version": "v2.5.6", diff --git a/index.php b/index.php new file mode 100644 index 0000000..0856de1 --- /dev/null +++ b/index.php @@ -0,0 +1,41 @@ +get('/', [$indexController,'indexAction']); + +$router->get('/articles/{id}', [$articleController,'getArticleAction']); +$router->put('/articles/{id}', [$articleController,'getArticleAction']); +$router->post('/articles/{id}', [$articleController,'getArticleAction']); +$router->delete('/articles/{id}', [$articleController,'getArticleAction']); +$router->get('/articles', [$articleController,'getArticlesAction']); + +$dispatcher = new Dispatcher($router); +$response = $dispatcher->dispatch($request->getMethod(), parse_url($request->getPathInfo(), PHP_URL_PATH)); + +$response->send(); + + + diff --git a/src/mvc/Controller/ArticleController.php b/src/mvc/Controller/ArticleController.php new file mode 100644 index 0000000..ecab1d1 --- /dev/null +++ b/src/mvc/Controller/ArticleController.php @@ -0,0 +1,54 @@ +twig = $twig; + } + /** + * @return Response + */ + public function getArticlesAction() + { + return new Response('So many articles here'); + } + /** + * @param string $id + * @return Response + */ + public function getArticleAction($id) + { + return new Response($this->twig->render('article.html.twig', ['method' => 'Get', 'articleId' => $id])); + } + /** + * @param string $id + * @return Response + */ + public function putArticleAction($id) + { + return new Response($this->twig->render('article.html.twig', ['method' => 'Put', 'articleId' => $id])); + } + /** + * @param string $id + * @return Response + */ + public function postArticleAction($id) + { + return new Response($this->twig->render('article.html.twig', ['method' => 'Post', 'articleId' => $id])); + } + /** + * @param string $id + * @return Response + */ + public function deleteArticleAction($id) + { + return new Response($this->twig->render('article.html.twig', ['method' => 'Delete', 'articleId' => $id])); + } +} \ No newline at end of file diff --git a/src/mvc/Controller/IndexController.php b/src/mvc/Controller/IndexController.php new file mode 100644 index 0000000..b2f9d08 --- /dev/null +++ b/src/mvc/Controller/IndexController.php @@ -0,0 +1,16 @@ +title = $title; + } + + public function getTitle() + { + return $this->title; + } +} diff --git a/src/mvc/index.php b/src/mvc/index.php index 1666197..ae4f748 100644 --- a/src/mvc/index.php +++ b/src/mvc/index.php @@ -13,51 +13,36 @@ use mvc\tim\Barcelona; use mvc\tim\RealMadrid; use Symfony\Component\HttpFoundation\Request; - use Symfony\Component\HttpFoundation\Response; - +use Symfony\Component\HttpFoundation\Response; +use mvc\Controller\ArticleController; +use mvc\Controller\IndexController; +use Phroute\RouteCollector; +use Phroute\Dispatcher; +$request = Request::createFromGlobals(); -/*$RealMadrid = new RealMadrid('Carlo Ancelotti','Santiago Bernabeu','Casillas'); -echo $RealMadrid->show().'
'; -echo ' Champions League - '. $RealMadrid->LC().'
'; +$loader = new Twig_Loader_Filesystem(__DIR__ . '/app/views'); +$twig = new Twig_Environment($loader); -echo '
'; -/*$request = Request::createFromGlobals(); -// запрошенный URI (на пример /about) без query parameters -$request->getPathInfo(); +$articleController = new ArticleController($twig); +$indexController = new IndexController($twig); -// получаем GET и POST переменные соответственно -$request->query->get('foo'); -$request->request->get('bar'); +$router = new RouteCollector(); -// получаем экземпляр UploadedFile определяемый идентификатором foo -$request->files->get('foo'); +$router->get('/', [$indexController,'indexAction']); -$request->getMethod(); // GET, POST, PUT, DELETE, HEAD -$request->getLanguages(); // массив языков, принимаемых клиентом +$router->get('/articles/{id}', [$articleController,'getArticleAction']); +$router->put('/articles/{id}', [$articleController,'getArticleAction']); +$router->post('/articles/{id}', [$articleController,'getArticleAction']); +$router->delete('/articles/{id}', [$articleController,'getArticleAction']); +$router->get('/articles', [$articleController,'getArticlesAction']); -$response = new Response(); +$dispatcher = new Dispatcher($router); +$response = $dispatcher->dispatch($request->getMethod(), parse_url($request->getPathInfo(), PHP_URL_PATH)); -$response->setContent('

'.$RealMadrid->LC().'

'); -$response->setStatusCode(200); -$response->headers->set('Content-Type', 'text/html'); +$response->send(); -// prints the HTTP headers followed by the content -$response->send();*/ -$request = Request::createFromGlobals(); -$path = $request->getPathInfo(); // запрошенный URL - -if (in_array($path, array(['', '/']))) { -$response = new Response('Welcome to the homepage.'); -} elseif ($path == '/barcelona') { - $response = Controllers::barcelonaAction(); -} elseif ($path == '/real') { - $response = Controllers::realAction(); -} else { - $response = new Response('Page not found.', 404); -} -$response->send();