Ben bu yaz kurulum iki farklı PHP sistemleri var. Her iki farklı yöntem kullanır:
Method #1: One PHP File Per Task
Bu yöntem, bir PHP
dosya, her önemli bir görev için oluşturulmuş olması gerekir. Örneğin, benim yükleme komut http://www.domain.com/upload.php
aracılığıyla erişim olacaktır. upload.php
, bir "denetleyici" ve "görünüm" sınıf örneği ve kullanıldığı üzerinde. Örneğin, upload.php
Böyle bir şey olabilir:
<?php
require_once PATH_LIBRARY . 'control/Uploader.class.php';
require_once PATH_LIBRARY . 'view/UploaderPage.class.php';
$uploader = new Uploader();
$uploader->setView(new UploaderPage());
$uploader->init();
?>
Ben başka bir senaryo üzerinde aramak istedim Yukarıdaki komut olarak, ben sadece yönlendirme ve gerekliyse URL kodlanmış değişkenleri eklemesi (header('Location: edit_details.php?image_id=456');
).
Tüm istekleri işler Method #2: A main index.php
dosya strong>
Bu yöntem, bir PHP
dosya her önemli görev için yaratılmış olmasını gerektirmez. Bunun yerine, sistem kullanılacak her bir "kontrol" class I Router
now özel bir sınıf ile index.php
kaydedilir. Belirtilen Kontrol yasal veya yasadışı ve (doğru denetleyiciye yolları tarayıcı) buna göre hareket ederse yönlendirici karar verir. Örneğin, index.php
yazısının bir basitleştirilmiş versiyonu:
<?php
require_once 'bootstrap.inc';
require_once PATH_LIBRARY . 'router/Router.class.php';
$router = new Router();
$router->register('Uploader', PATH_LIBRARY . 'control/Uploader.class.php');
$router->register('DetailsEditor', PATH_LIBRARY . 'control/DetailsEditor.class.php');
$router->route();
?>
Bu nedenle, her bir hareket index.php
gerçekleşir. Belirli bir görünüm ve denetleyici sınıf örneğini o çok başka yapmıyoruz dosyaları bir sürü için gerek yoktur. Eğer script / sınıf B script / A sınıfı aramak istiyorsanız ANCAK, o zaman URL denetleyici sınıfının adını iletmekten gerekir: header('Location: index.php?controller=DetailsEditor&image_id=456')
.
Şimdiye kadar, ben URL Kontrol isim eklemek gerekir ki aslında gerçekten sevmiyorum. Ben son kullanıcı benim temel sistemi çok fazla ortaya hissediyorum. Ama ben tek sayfada tüm denetleyici sınıfları kayıt gerçeğini sevmiyorum. Kontrolör adını teşhir güvenli olup olmadığını Çoğunlukla, bilmiyorum. Bir diğer sıkıntı da ben POST istekleri ile bir senaryo üzerinde aramak istiyorsanız, ben gerekli denetleyici sınıfını belirten gizli bir giriş eklemek zorunda olduğunu (örneğin, <input type="hidden" name="controller" value="DetailsEditor" />
).
Ben bu konuda gitmek için yeterli olduğunu umuyoruz. Ben ikinci yöntem gerçekten önümüzdeki aylarda beni iyi hizmet edecek değil sadece sinir duyuyorum. Ben birini veya diğerini seçmek için yakında bir zaman küçük bir pencere var.
Teşekkür.