Tüm web için bir dosya kullanarak Artıları ve eksileri?

11 Cevap php

I'm not sure how I should express this, but I'll give it a try.
I recently started coding my portfolio in object-oriented PHP and I'm wondering if it's according to best practices to use a single page where the content changes depending on SQL data and the $_GET variable?

Yani / Değilse, neden?

Düzenleme: Bir sonraki yazı, daha derinlemesine detaylara bir göz atın.

11 Cevap

Eğer tek bir dosya tüm istekleri hizmet veren ön kontrolör desen kullanarak soruyorsunuz? Genellikle bu sorgu dizesi bir parametre olarak verilmektedir URL kalanı ile tüm isteklerini elde bir index.php ve mod_rewrite ile yapılır.

http://www.onlamp.com/pub/a/php/2004/07/08/front_controller.html

Ben bu model size kimlik gibi şeyler işlemek için tek bir yer verir, çünkü uygulamalar için kullanılabilir, ve sık sık yeni özellikler denetleyicisi ile kayıtlı sınıflar olmak zorunda nerede sıkı bir düzeyde şeyleri entegre etmek gerekir tavsiye eğiliminde olacaktır bazı mekanizması üzerinden anlamda bir çok yapar.

Eğer bina web sitelerinin eski teknikleri kullanarak sürece URL yapısı ve dosya yapısı arasında gerçek bir ilişki vardır çünkü başkalarının sözü var URL'ler hakkında endişeler, gerçekten doğru değildir. Apache işlevselliği iyi bir öbek / dizin yapısı ve URL yapısını dosya kavramına dayanmaktadır farklı kavramlardır (takma modülü, böylece, modül, içerik müzakeresini yeniden yazmak ve benzeri) vardır

Eğer kodu dahil gerekenleri anlamaya vb oturum değişkenleri kullanan bir tek açılış sayfası (örneğin index.php) diyorsan, o zaman evet, bu bir sık ​​kullanılan tekniktir.

Edit: ve yukarıdaki I Daniel Papasian onun mükemmel sonrası açıklamalar ne anlama geliyor

Eğer tek bir dosyada HTML, SQL ve PHP tüm yerleştirerek demek, o zaman hayır nedenlerle GateKiller tarafından işaret.

Actaul sayfası dosya (örneğin, sayfa başlığı, indeks sayfa son haberleri almak için kod olabilecek, vb) sitenizde standart bir "sayfa" o sayfa hakkında diffrent sadece ne içermelidir. (Veya olabilir) birden fazla yerde kullanılabilir Everythin, dış php dosyaları taşındı ve dahil edilmelidir. Örnekler:

  • Veritabanı infomation (şifre, kullanıcı adı, vb)
  • Üstbilgi / Altbilgi
  • Giriş kodu

Bu yönetmek kod çok easyer yapar. Örn. veritabanı parolası, güncelleştirilmesi gereken onun sadece bir dosya veya değiştirilmesi gerekir Eğer başlığına bir banner eklemek için karar ise, kendi yine sadece bir sayfa değil tüm sayfalarını değiştirmek durumunda.

Ayrıca yeni özellikler çok daha az iş, örneğin yeni bir sayfa sadece olabilir ekleyerek yapar:

<?php
require ('config.php')
require ('start.php')
require ('header.php')
//custom page stuff
require ('footer.php')
?>

veya çerezler aracılığıyla otomatik oturum açma ekleyerek, basit bir Login değişikliği ((çerez oluşturma)) işlevi ve start.php (çerez için kontrol (+) Giriş çağırarak) 'dir.

Ayrıca easyily anlaşılır gelecekte diğer projeler için bu dosyaları aktarabilirsiniz.

Senin + söz gatekiller şey de geç bağlama yararlanamazlar.

  • Kodunu yönetmek zor

Eğer sürüm denetimi kullanıyorsanız, bu sitenin tek bir "sayfa" olmuş olabilecek değişiklikleri geri almak için bir LOT daha zor olacaktır. Eğer sonra gelmiş bir şey için geri birleştirmek gerekir yana

Eğer yeniden mod kullanmadığınız sürece bu arama motoru dostu olarak değil,

Siteniz bir özel CMS veya benzeri bir şey tarafından yönetilen ise, bir sayfayı kullanmak için hiçbir neden yok - Ben en çok katılmıyorum eğilimindedir.

Ben bir süre yazdığı bir CMS ile benzer bir şey yaptım. Tüm müşteriler, tema, içerik, ekleri ve üye izinleri için veritabanı sorgulanan tek bir default.asp sayfası vardı. Bir değişiklik yapmak için, ben sadece bir kez değişiklik yapılmış ve değişim bunu gerekirse benim diğer müşterilerine kopyaladı.

Tabii bu en senaryolarda işe yaramaz. Eğer FARKLI şeyler (sayfa yüklenirken benim cms sadece belirli işlevleri tekrarlanan) bir sürü yapan bir web siteniz varsa, o zaman birden fazla sayfa gerçekten gitmek için tek yoldur.

Ilgilenen kim o sizin için, tam olarak bu modeli kullanan bir çerçeve yoktur. Başlangıçta ColdFusion için. Bu yöntem için bir topluluk hala var, sürüm 5.5 (Aralık 2007) yaklaşık bir yıl önce piyasaya sürüldü.

FuseBox Framework site

Wikipedia entry

Bu ScreenDump ve aşağıdaki açıklamanın kodumu anda neye benzediğini daha iyi bir fikir verebilir.

File-structure

Ben 'İnternet Arkadaş' biri, Daniel Papasian gibi aynı modeli kullanın ve birkaç diğerleri söz; Ön Denetleyici.

Benim indeks sayfası bu gibi görünüyor.

require_once 'config.php';
require_once 'class_lib/template.php';

$template = new template($config);
$template->dataQuery();
$template->pageCheck();
$template->titleAssembly();
$template->cssAssembly();
$template->metaAssembly();
$template->menuAssembly();
$template->content();
echo $template->publish();

The class construct opens the main template file and loads it into a variable that each method can manipulate with by replacing tags with generated code. Ugly URLs isn't really an issue since I'll be using mod_rewrite to clean it up.
However, Papasian has a point, this method would be more suitable for web-based applications and the like.

I apologize for not being very specific with my question in the first place.
Furthermore, big 'thank you' to everyone who dropped a few lines to help out.

Ben sık sık. Php uzantısı (yani site) olmadan bir php dosyası kullanın ve eklemek

<Files site>
ForceType application/x-httpd-php 
</Files>

yapar. htaccess apache bir php dosyası olarak yorumlayabilir.

Sen url içindeki dosyaya değişkenler ayrıştırmak: http://www.yourdomain.com/site/var1/var2/var3

Kullanım

$var_array = explode("/",$_SERVER['REQUEST_URI']); 
$var1 = $var_array[1];
$var2 = $var_array[2];
$var3 = $var_array[3];

değişkenler olsun. Bu şekilde modrewrite olmadan searchengingfriendlyurls tek bir dosya kullanabilirsiniz.

re: URL ve dosya yapısı

Ben tüm içeriği bir veritabanında oldu ve endeks? P = 434 modeli ile erişilen bir site dönüştürülür. Orada veritabanı kullanarak hiçbir yararı oldu, ve site onlar tarayıcı ve sayfaları ile içeriğini düzenlemek zorunda beri içerik eklemek zorunda insanlara kafa karıştırıcı sadece rakamlar vardı.

Ben tüm içeriği çıkardı ve ayrı dosyalarda koydu. Her mantıklı bir isim vardı ve klasörler halinde organize edildi. Her dosya böyle bir şey baktı:

require('sitelib');
do_header('about', 'About Us');
// content here
do_footer();

İstemci onu sevdi. Onlar gitmek doğru dosyayı bulmak ve değişiklik yapmak için herhangi bir HTML editörü kullanmak başardık. Ve onlar yeni sayfalar yapmak başardık. Tüm söylemek: Bazen, URL ve dosya yapıları maç için yararlıdır.