Her Controller için bir komut dosyası sahip vs URL yoluyla Controller sınıfından belirterek artıları ve eksileri nelerdir?

0 Cevap php

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

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.

0 Cevap