i'm new mvc pattern approach. i've started developing in php year ago, , want improve knowledge , projects too. want use mvc pattern divide logic, presentation , data.
well, i've been searching while. truth don't know search.
i'm trying setup mvc framework in php. i'm following tutorial on youtube, , i'm stuck @ routing point.
i've read lot of guides, , every single 1 teaches things in different ways, creating more confusion.
the point this:
i have .htaccess file contains directives (but problem don't know directives means. i've never understood htaccess logic)
options -multiviews rewriteengine on #i think sets base url of site? rewritebase /~caiuscitiriga/mvc/public #what mean?? rewritecond %{request_filename} !-d rewritecond %{request_filename} !-f #and this?! rewriterule ^(.+)$ index.php?url=$1 [qsa,l]
and have these php scripts:
index.php
<?php require_once '../app/init.php'; $app = new app();
init.php
<?php require_once 'core/app.php'; require_once 'core/controller.php';
app.php
don't ask me why used filter_var , rtrim. because want figure out. said before, code isn't mine. i'm sure trick it's in .htacess , app.php don't understand logic
class app{ protected $controller = 'home'; protected $method = 'index'; protected $params = []; public function __construct() { print_r($this->parseurl()); } public function parseurl() { if(isset($_get['url'])) { return $url = explode('/', filter_var(rtrim($_get['url'], '/'), filter_sanitize_url)); } } }
controller.php
<?php class controller{ }
home.php
<?php class home extends controller{ public function index() { echo 'home/index'; } }
if pass url: localhost/~caiuscitiriga/mvc/public/home/index/maxine
this: array ( [0] => home [1] => index [2] => maxine )
why?!!? mean, it's correct. why??
rewritecond %{request_filename} !-d rewritecond %{request_filename} !-f rewriterule ^(.+)$ index.php?url=$1 [qsa,l]
i read above as, if request not directory, , not file, take path , pass index.php internally url attribute path.
so now
//example.com/big/bad/mamma
maps to
//example.com/index.php?url=big/bad/mamma
you call script above if want.
then parse url taking value of url ('big/bad/mamma'), removing trailing slash if there one. , splitting string wherever encounters forward slash. end 3 parts. have in array.
from manual:
the filter_sanitize_url filter remove characters except letters, digits , $-_.+!*'(),{}|\^~[]`<>#%";/?:@&=.
but break down if want understand pieces:
$url = $_get['url']; var_dump($url); $url = rtrim($url, '/'); var_dump($url); $url = filter_var($url, filter_sanitize_url); var_dump($url); $url = explode('/', $url); var_dump($url);
Comments
Post a Comment