Php site yapısı

8 Cevap php

Ben büyük ölçüde php, web siteme ayar sürecinde şu anda değilim. Bu bunu kullanarak benim ilk kez olmasına rağmen bu yüzden bazı sorunlarla çalıştırıyorum.

Ben aşağı sitenin temellerini var. Kaydedilmesi, giriş-in, profil sayfası e.t.c. Ben site düzeni ile ilgili bir karar vermek zorunda gibi görünüyor Ancak bu nerede olduğunu.

Örneğin. Şu anda bir kullanıcının profil sayfası URL'sini arasında var

mysite.com / profile.php

İdeal ne isterim olmak için çizgisinde bir şeydir

mysite.com / user / ChrisSalij

Diğer şeyler arasında this okuma Ben bu emin değilim, ne de nerede bir uygulamaya başlamak için ama ben, bir ön denetleyicisi tarzı site gerekir inanıyorum.

Ben php ve benzeri oldukça yeni olduğunu akılda tutarak, ben herhangi bir yararlı yorumları ve bağlantıları ve yapıcı eleştiriler seviniriz.

Ben meydan okurcasına makale ve açıklamalar bağlantılar mükemmel olurdu öğrenmek için olacak değilim. Ben genellikle bu gibi şeyler üzerinde araştırma adil bir miktar yapmak. Ama ben nereden başlayacağımı bilmiyorum bunun için çok yeniyim.

EDIT: I should also add that I'm planning on scaling this website up to the large scale. It's small to start with but there should be quite a few pages if my goals work out. So I'm willing to put the effort in now to get it set up right for the long term. Thanks

8 Cevap

Peki, PHP dünyasına hoş geldiniz :)

Her şeyden önce, bir ön kontrolör, tipik olarak bir MVC (Model-View-Controller) olarak bilinen daha büyük bir çerçevesinin sadece 1 parçasıdır. Basitçe söylemek gerekirse, bir ön denetleyicisi, sitenize geldiğinde tüm insanların gitmek "index" sayfası gibi bir olsa olabilir. Bu ihtiyaç sitesi şeyleri başlatmak ve daha sonra çekme ve çeşitli kaynaklar (siz mysite.com / user / ... verilmiş gibi tipik URL yoluyla) kullanıcı isteği işlemek için gerekli olan çalışan işler. Bu aşırı basit bir açıklama.

Ille zor bir şey öğrenmek için ise, ben bütün fikir ve MVC temel uygulanmasını açıklar this gibi bir öğretici bakarak tavsiye ederim. Onlar ön kontrolör bir "router" (ki orada bir MVC uygulamak için fazla 1 yoldur ya da varyantlar ve farklı bölümleri için fazla 1 isim, başka bir şey) diyoruz. Ben bunu anlamak ya da kavramak zor özellıgıdır sanmıyorum. En modern MVC çerçeveler Object Oriented Programlama uygulamalarını yapmak. (Bazı temel OOP becerileri dahil) PHP video screencast iyi bir dizi için, bir göz atın here.

Bu PHP ilk büyük kullanımı ve MVC gibi bir şey uygulamak istiyorsanız Son olarak, size CakePHP veya CodeIgniter gibi bir şey kontrol edebilirsiniz. Iyi belgelerine sahip ve büyük çerçeveler sizin için zor bir sürü iş yapmış. İyi şanslar

Eğer apache üzerinde olduğunuzu varsayarak, sen .htaccess sitenizin kökünde adında bir dosya oluşturun ve şu satırları ekleyebilirsiniz

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php?url=$0 [L,QSA]

Bu index.php Tüm sayfa isteklerini geçecek. Index.php olarak, $_GET['url'] ayrıştırmak ve include ile uygun sayfasını yüklemek isterdim. Sen girdileri ve emin insanlar olmamalıdır şey dahil değil yapmak zorundasınız. Sen gibi bir şey ile parçaları alabilirsiniz:

list($controller, $username) = explode('/', $_GET['url']);

Tipik MVC yapısı kullanmak istiyorsunuz controller/action/id. "Eylem" sizin örnekte olduğu gibi, olsa atlanırsa, ben "görünüm" varsayılan yapmak istiyorum. "View" kullanıcının profilinde gibi. Kimliği adı olacaktır. Tipik olarak, her denetleyici bir sınıf olduğunu ve her eylem bu sınıfta bir fonksiyonu olduğunu, bundan sonra herhangi bir parametre işlevi içine geçirilir. Her eylem ile ilişkili bir görünüm dosyası da bulunuyor.

Size tam bir örnek vermek için bir sürü kod var (ben sadece bir MVC framework kadar kodlanmış!) Ama bu sana başlamak için temel vermelidir.

Daha ayrıntılı bilgi ve kod örnekleri gerekiyorsa kesinlikle CakePHP'de, Kohana / CodeIgniter gibi diğer bazı çerçeveler göz atın.

Bir "Ön Kontrol tarzı sitesi oluşturma" anlamına gelir

  1. Web site / uygulama içine tüm istekleri yakalamak için mod_rewrite kullanarak

  2. Bir PHP sınıfı adı (kontrolör) ve kontrolör (tipik olarak adlandırılan eylem üzerinde bir yöntemle bu URL'yi Haritalama.

Ancak, you Bu doğrudan PHP kullanarak istemiyorum, sen bir PHP / MVC Framework, veya CMS tabanlı bir PHP ya da kullanmak istiyorum. Örnek Joomla, Concrete5, Code Igniter ve PHP Cake içerir. Bu, "çözülmüş" bir sorundur.

Bu çerçevelerin hepsi zaten bir URL bir PHP sınıfı dönüşür zaman / nasıl karar (diğer şeyler arasında) sabit çalışması yaptık. Birini seçerek siz tekerleği yeniden uygulanması göz ardı edebilir ve çekirdek iş (bina konum site) konsantre.

Bu da sıfırdan veya (örneğin mükemmel Zend Framework gibi) diğer bazı çerçeveden modülleri birleştiren biri inşa edilen yeni bir çerçevede, oda yok demek değil. Ancak, bu tür temel bir soru soruyorsun ki gerçeği muhtemelen (kimse sihirli deneyimi bu tür var, kötü hissetmiyorum ki inşa etmeliyiz kişi olmak için yeterince tecrübeli değil demektir, sadece zaman ile geliyor )

Mevcut çerçeveler ile kemer altında bazı deneyim olsun, onlar inşa konum nasıl görmek ve bunları kullanmak nasıl bir fikir olsun. Eğer kemer altında gerçek dünya deneyimi bir grup var kez yine kendi çerçevesi oluşturmak için ihtiyacı hissediyorum Sonra "sonra", sorunu çözmek için daha iyi bir konumda olacak.

Bir URL Rewriting bakmak veya Apache mod_rewrite atın.

Ben genel olarak ne kadar bilgi sahibi PHP bilmiyorum. Kesinlikle indirme ve kitap PHP 5 Güç Programlama okuma tavsiye ne olabilir. Bunu ücretsiz olarak indirebilirsiniz here. Onu okumak için çok zaman alır ama kesinlikle size çok yardımcı olacaktır. (Sadece çok seçici bölümleri okuyabilirsiniz.)

Sana tavsiye başka bir şey (çerçeve kendisi muhtemelen sizin için çok fazla.). Zend Framework gelen Quick Start Guide okumaktır Ama bu kılavuzda özellikle tüm harici sitelere bağlantıları çok iyi. Bunu teorinin bir çok şey öğrenebilirsiniz.

Ve tüm diğerleri ne dedi: tüm oluşturulan çerçeveye öğrenin.

Have a look at Apache's mod_rewrite. Something as simple as the code below would do the trick. I wouldn't make a decision about architecture, if it could be a case that learning to use mod_rewrite would solve your problem. More than likely it will be useful in the future for you anyway.

RewriteRule ^user/(.*)/$    profile.php?username=$1 [PT]

Edit: Front Controller desen ölçekli değildir. Uygulamanızın bir parçası daha ağır diğerlerinden daha kullanılırsa eğer bir ön denetleyicisi kullanıyorsanız Örneğin, bu özel isteği ölçek olamaz.

Sen kutudan sizin için bu işlevselliği sağlar Zend Framework, böyle bir şey için bakmak gerekir.

Onlar hiçbir zaman rayına girecek mükemmel bir rehber var.

http://framework.zend.com/docs/quickstart

Ben Sev ile, bu da url yeniden yazma ile ele alınabilir katılıyorum. Ayrıca sizin için otomatik olarak bu gibi bazı şeyler yapmak CakePHP ve CodeIgniter gibi çerçeveler içine bakmak gerekir.