Başlatmak için nasıl bir temel PHP MVC Yazma, emin değilim

4 Cevap php

PHP ve MySQL tabanlı kişisel bir proje üzerinde çalışıyorum, ve ben biraz araştırma yapıyor ve yeniden yazar etrafında oynuyorum. Ben bir site var diyelim ...

http://www.myDomain.com/

Ve ben etki kökünde, bir index.php veya ön yükleme yapmak istiyorum. Yani eğer erişmek ...

http://www.myDomain.com/admin/

Hala yapılandırma dosyalarının ayrıştırma ve yükleme kolları etki üst düzeyi, index.php yüklemek ve doğru konuma kullanıcı yönlendirme, yol boyunca oldukça bağlantıları yapmak olacaktır.

Nerede bu benim araştırma ve eğitim başlamalıdır? Ben biraz bir kayıp değilim. Zaman ayırdığınız için teşekkür ederiz :)


Güncelleme:

I do bir ön denetleyicisi ile bir MVC sisteme doğru hareket etmek ister gibi geliyor. Benim kendi MVC framework yazmaya herhangi bir iyi referanslar (çok temel olurdu). Dürüst olmak gerekirse bu anda Zend Framework çekmek istemiyorum (bir sürü it up toplu olurdu!)

4 Cevap

Temel olarak, index.php herhangi gelen istek yeniden. Burada bir örnek .htaccess Kohana çerçevesinden Var:

# Turn on URL rewriting
RewriteEngine On

# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

Yani sizin örneği index.php/admin yönlendirilir olacaktır. Sonra $_SERVER['REQUEST_URI'] yanında ne belirlemek için bakabilirsiniz.

Nispeten yaygın model yöntemi olarak, kontrol, ve ikinci olarak URI ilk parçasını kullanmak olacaktır. Yani, örneğin:

$segments = explode($_SERVER['request_uri'], '/');//array('admin')

if(isset($segments[0]))
{
    $class = $segments[0].'_controller';//'admin_controller

    if(isset($segments[1]))
         $method = $segments[1];
    else
         $method = 'index';
}
else
{
    $class = 'index_controller';
    $method = 'index';
}

$controller = new $class;
$controller->$method();

Bu kod örneği için kullanıcı varolmayan bir kontrolör için bir URL ziyaret eğer, ateşli bir ölümle ölmek gibi, hiçbir şekilde üretime hazır olduğunu. Ayrıca sap argümanlar gibi güzel şeyler yapmaz. Ama PHP MVC framework nasıl çalıştığını arkasındaki fikir işte.

Arada, ön yükleme aradığınız ne için başka bir adıdır front controller. Sen desen hakkında çok daha fazla bilgi bulmak için bu terimi google olabilir.

Eğer dahili may index.php olacak ki, sizin önyükleme dosyasına tüm istekleri yeniden yazmak için .htaccess yapılandırma bakmak gerekir

Kohana bu bunu yapmak için kullandığı

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Daha sonra erişim $_SERVER['REQUEST_URI'] kontrolörleri yönlendirme isteklerini başlamak için olabilir.

Bu deneyin http://phpro.org/tutorials/Model-View-Controller-MVC.html iyi belgelenmiş ve iyi bir başlangıç ​​noktasıdır!

Bu öğretici ile PHP MVC öğrenmeye başladı. Bu geçmesi lütfen

http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/