Notizen
MVC
Inhalt der Notizen (1)
Seite 1
das----------------------- MVC -------------------------------
usuario -> controler -> model -> controler - > view -> usuario
1 - ultilizar namespace
2 - Estrutura da aplicacao - adcionar um diretorio para cada elemento do MVC dentro de um diretorio chamado App
legenda:
NameApp
[]App
[]controller
[]model
[]view
-init.php // init e responsabel pela configuracao das rotas
[]public // public contem o arquivo index, ela eh o ponto de partida do site
-index.php
[]vendor
-composer.json
3 - adcionar um deretorio public (pasta root), e colocar o index dentro deste diretorio
4 - configuracao do htaccess: // faz com que a pagina inicie no diretorio que foi configurado abaixo;
- criar um arquivo chamado (.htaccess) dentro do diretorio public.
- dentro do arquivo .htaccess incerir os seguintes comandos:
RewriteEngine On
RewriteCond %(REQUEST_FILENAME) -s [OR]
RewriteCond %(REQUEST_FILENAME) -1 [OR]
RewriteCond %(REQUEST_FILENAME) -d
RewriteRule ^.*S - [NC,L]
RewriteRule ^.*S index.php [NC,L] // index.php e onde sempre ira começar o acesso
5 - dentro do diretorio App, criar um arquivo chamado Route.php e criar a classe de toras
<?php
namespace App;
use NomadaAplicavao\Init\Bootstrap;
class Route extends Bootstrap{
protected function iniRoutes() {
$routes['home'] = array("route"=>"/","controller"=>"indexControllers","action"=>"index");
$routes["empresa"] = array("route"=>"/empresa","controller"=>"indexControllers","action"=>"empresa");
$this->setRoutes($routes);
}
}
6 - adcionar um arquivo chamado composer.json no diretorio da aplicavao no mesmo nivel do dir App com os seguintes comandos:
{
"name":"nomedoframework/mvc", // nome do Framework
"require": {"php":">=5.6"}, // versao do php
"authors": [{
"name":"Dionathan de Cordova",
"email":"dionathan_bass@hotmail.com"
}],
"autoload":{
// nome do namespace que carrega todas as classes
"psr-4":{
"nomedoframework\\":"vendor/nomedoframework/",
"App\\":"App/"
}
7 - apos acessar o diretorio da aplicacao no cmd , digitar o seguinte comando para
ocorrer a instalacao do composer diretamente no diretorio da aplicaçao.
php -r "readfile('https://getcomposer.org/installer');" | php
8 - no cmd o seguinte comando:
php composer.phar install // isso deve acrescentar um arquivo no diretorio da
aplicacao com o nome de composer.phar
9 - no cmd o seguinte commando : composer dump-autoload // isso gera os arquivos corretos para o autoload de classes
obs: cada vez que for gerada uma nova classe, deve executar
deve gerar este comando novamente.
10 - dentro da pasta vendor, deve adcionar um diretorio com o nome que vc escolheu para
o framework no arquivo composer.json
digamos que este diretorio se chamara de (Son)
11 - para fazer um teste e ver se esta td funcionando neste momento:
abra o Route.php
<?php
namespace App;
class Route {
public function __construct() {
echo "carregou";
}
}
e dentro do public/index.php
instancie uma nova classe Route;
obs: voce pode testar via wamp server ou pelo host embutido do php na seguinte maneita
abra o cmd acesse o diretorio da aplicacao ate o loval onde o index.php se encontra
apos isso execute o comando : php -s localhost:8080
12 - se ocorrer algum erro, mude o autoload do composer.json para :
"autoload": {
"classmap": [
"controller", "model", "view" // "Nomedodiretorio que contem as classes MCV(contorller/model/view)"
]
},
---------- iniciando as rotas --------------------------
13 - dentro de vendor/Son criar um diretorio chamado init, e dentro do diretorio Init cirar arquivo chamado Bootstrap.php
<?php
namespace Son/Init;
class Bootstrap {
private $routes;
protected function __contruct() {
$this->iniRoutes();
$this->run($this->getUrl());
}
abstract protected function iniRoutes()
public function run($url) {
array_walk($this->routes, function($route) use ($url) {
if($url == $route['route']) {
$class = "App\\controller\\".ucfirst($route['controller']);
$controller = new $class;
$action = $route['action'];
$controller->$action();
}
});
}
protected function setRoutes(array $routes) {
$this->routes = $routes;
}
protected function getUrl() {
return parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
}
}
14 - dentro de App/controller criar um arquivo chamado IndexController.php
<?php
namespace App\Controllers;
use Son\Controller\Action;
class IndexControllers extends Action {
// metodos que seram usados pela array $route da classe Route logo acima;
public function index() {
// setando um objeto para a classe view
$this->view->ling = array("Java", "php");
// metodo para o includo do action acessado
$this->render("index");
}
public function empresa() {
// metodo para o includo do action acessado
$this->render("empresa");
}
}
15 - dentro de App/View criar um diretorio chamado Index e dentro arquivos chamados index.phtml e empresa.phtml
ob: aqui seram mostradas as informacoes que seram passadas para a tela
--------------------------------------------------------------------------
--------------------------------------------------------------------------
16 - criar um novo diretorio chamado Controller dentro de vendor/Son e criat uma classe Action.php
<?php
namespace Son\Controller;
abstract class Action {
protected $view;
private $action;
public function __construct() {
// uma classe vazia, que ainda nao foi criada
$this->view = new \stdClass;
}
protected function render($action, $layout = true) {
$this->action = $action;
// se layout for verdadeiro a aplicacao ultiliza um template
if($layout == TRUE && file_exists("../App/Views/layout.phtml")) {
include_once "../Views/layout.phtml";
}else{
$this->content();
}
}
protected function content() {
$currentClass = get_class($this);
// Controller vem do nome da classe(indexController)
$singleClassName = strtolower((str_replace("Controllers", "", str_replace("App\\Controllers\\", "", $currentClass))));
// include agora recebe a action atual acessada
include_once "../App/Views/".$singleClassName."/".$this->action.".phtml";
}
}
17 - dentro de App/Views criar um arquivo chamado layout.phtml
dentro do layout
Informationen
- Beschreibung
- Tutorial de MVC php
- Erstellt von
- Dionathan Cordova · Mai 2017
- Aktualisiert
- 7 Mai 2017
- Aufrufe
- 23
- Bewertung