[ BLACK_SWORD @ 30.03.2012. 18:19 ] @
Pozdrav!

krenuo sam da pravim mvc pattern al ne znam dal je ovo ispravno sto radim.

Napravio sam foldere

controllers
--about.php
models
views
--about.php
libraries
--Bootstrap.php
--Loader.php
--Controller.php
index.php

ovo mi je index.php
Code:

<?php

error_reporting(E_ALL);

$base_path = dirname(realpath(__FILE__));
$base_path = str_replace('\\', '/', $base_path);

define('BASE_PATH', $base_path . '/');

require BASE_PATH . 'libraries/Controller.php';
require BASE_PATH . 'libraries/Bootstrap.php';

$application = new Bootstrap();



Bootstrap.php
Code:

<?php

class Bootstrap {

    function __construct() {

        $url = isset($_GET['url']) ? $_GET['url'] : null;
        $url = rtrim($url, '/');
        $url = explode('/', $url);

        if (empty($url[0])) {
            require BASE_PATH . 'controllers/index.php';
            $controller = new Index();
            $controller->index();
            return false;
        }

        $file = BASE_PATH . 'controllers/' . $url[0] . '.php';

        if (file_exists($file)) {
            require $file;
        } else {
            exit('Stranica ne postoji');
        }

        $controller = new $url[0]();

        if (isset($url[2])) {
            if (method_exists($controller, $url[1])) {
                $controller->{$url[1]}($url[2]);
            } else {
                exit('Stranica ne postoji');
            }
        } else {

            if (isset($url[1])) {
                if (method_exists($controller, $url[1])) {
                    $controller->{$url[1]}();
                } else {
                    exit('Stranica ne postoji');
                }
            } else {
                $controller->index();
            }
        }
    }
}


Loader.php
Code:

<?php

class Loader {

      public function view($file_name, $data = null) {
            if (is_array($data)) {
                extract($data);
            }
            require BASE_PATH . 'views/' . $file_name . '.php';
      }

      public function model($file_name) {
            require BASE_PATH . 'models/' . $file_name . '.php';
      }
}



Controller.php
Code:

<?php

class Controller {

         public $load;

         function __construct() {
               $this->load = new Loader();
         }
}




i sad kad ocu npr napravit stranicu u about.php
Code:


<?php

class About extends Controller {

        function __construct() {
               parent::__construct();
        }

         public function index() {
               $data = array('title' => 'About');
               $this->load->view('about', $data);
         }

}




views/about.php
Code:

<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>About</h1>
</body>
</html>




Dali je ovo dobro vako?

Dali neko zna kakav dobar tutorijal za mvc?


Hvala
[ BLACK_SWORD @ 30.03.2012. 20:58 ] @
Možel mi neko objasnit kako se pravi mvc okvir?
[ alfa-pro @ 31.03.2012. 12:31 ] @
Kakav MVC okvir? Nerazumem pitanje, budi malo precizniji? Ja vec duze vreme iskljucivo forsiram mvc i hmvc ali za okvir nisam cuo nikada bas me zivo zanima sta je?..

Preporucujem ti ovaj tutorijal za kreiranje sopstvenog mini framework-a, iz 12 delova, kojeg je napisao Fabien Potencier, autor Symfony framework-a. Jako je dobar tutorial i moze ti pomoci dosta.

http://fabien.potencier.org/ar...the-symfony2-components-part-1

I sto se tice kontrolera, pogledaj kako su oni uradili celu klasu i kako se koristi.

http://framework.zend.com/manual/en/zend.controller.html

Ovo tvoje mi lici na Codeigniter FW.

[Ovu poruku je menjao alfa-pro dana 31.03.2012. u 14:42 GMT+1]
[ Miroslav Ćurčić @ 31.03.2012. 12:48 ] @
@alfapro: sebe nazivaš profesionalcem a nisi čuo za okvir? ccccc

@blacksword: prijateljski savet - mani se izrade svog MVC sistema, sigurno ga nećeš napraviti dovoljno dobrim kao što su ga napravili mnogo iskusniji, pogledaj dokumentaciju za CodeIgniter, Kohana, Yii. Tu ćeš saznati sve što ti treba.
[ alfa-pro @ 31.03.2012. 13:41 ] @
Ti si neki pametan a i corav, gde sam ja sebe nazvao profesionalcem?

Nisam cuo i sta je tu problem?

Lepo kaze moj kolega da ste vi sa ES samo TEORETICHARI....

@blacksword: Ako hoces da naucis i sebe da usavrsavas onda ga radi, mani se ovih copy,paste teoretichara.... Rutina je bitna
[ Miroslav Ćurčić @ 31.03.2012. 14:15 ] @
Opušteno, zezam te, zato sam i dodao ono 'cccccc'.
Nešto nalik na ovo: http://www.elitesecurity.org/t32362-lt-input-type-checkbox-name

A sad ozbiljno, gradnja svog frejmorka/MVCa/CMSa je lep zadatak ali:
1. oduzeće mu mnogo vremena,
2. sigurno će doći u situaciju da mora da menja nešto iz osnova jer nije u startu pretpostavio da će naići na neki problem, opet vreme,
3. sigurnost i stabilnost neće biti na nivou kao što je kod ovih gotovih proizvoda čiji kod je pregledalo mnogo više ljudi

Dakle, u edukativne svrhe - da, ili ako pravi nešto za sebe, ali zaboleće ga glava ako bi da se vežba na tuđem sajtu.
[ BLACK_SWORD @ 31.03.2012. 17:31 ] @
Citat:
alfa-pro: Kakav MVC okvir

[Ovu poruku je menjao alfa-pro dana 31.03.2012. u 14:42 GMT+1]



Pa zar nije framework okvir za rad znaci ja sam pitao kako da napravim mvc framework (okvir za rad) :D
[ VladaSu @ 04.04.2012. 09:40 ] @
Ne obaziri se na zlonamerne komentare i php-web programere koji ne znaju HTML i da iscitaju podatke iz baze.
Ili koji klikcu po Joomli i Wordpressu.

Dobro je ono sto si napravio i dobro si nazvao jer FW ne mora obavezno biti MVC.
Bitno je da ti je Model, View i Controller odvojen.
View ti sluzi za ispisivanje podataka, Model za obradu a Controller za tok programa.

Miroslav ti je naveo dobre i dovoljne razloge zasto da ne pravis svoj FW.

Ali u edukativne svrhe ako budes pravio svoj FW zasnovan na MVC arhitekturi pomocice ti da shvatis sustinu
i kasnije ces sigurno biti bolji programer nego neko ko je web programiranje poceo da uci od pola, koji je odmah poceo da uci tudji FW
bez analize zasto neke stvari rade kako rade.
Tako ces npr. zbeci da ti jednostavan sajt koji ima par tekstova i slika pojede 128Mb memorije jer ces znati sta se u pozadini desava
jer si napravio sajt sa logikom a ne mehanicki uklapao kodove.