Bir Kohana 3 projede iş mantığı düzenlemek nasıl

2 Cevap php

Ben bu yüzden hala alıyorum ben geçmişte MVC kalıplarını hayata geçirdik. Kohana 3 ile orta ölçekli web uygulaması kurmak için nasıl tavsiye, öğreticiler ve bağlantılar için arıyorum ama bir "resmiyet" MVC çerçevesinde karşı asla çalışmadım ediyorum benim terminoloji etrafında kafa - böylece, temel örnekler ile etrafında oynuyor görüş ve şablonları bina ve.

Ben oldukça iyi ilerliyor değilim ama bir öğrenme nesnesi olarak bir gerçek dünya web projesi (şimdi oldukça uzun bir süre için planlama oldum o benim kendi biri) kurmak istiyorum.

Ben örnek olarak en iyi öğrenirler, ancak örnek-tabanlı belgeler hemen Kohana 3 için biraz seyrek - onlar sitede yüzden kendileri söylüyorlar. Ben geçinmek çerçeveyi öğrenme konusunda endişeli değilim, ben emin kod tabanı sağlıklı baştan yapılandırılmıştır yapmak istiyorum - yani kontrolörler, güzel bölünmüş iyi adlandırılmıştır ve standartlara uygun, ve en önemlisi iş mantığı Uygun boyutlu modellere ayrılır.

Benim uygulama, özünde, arama ve listeleme fonksiyonları bir dizi ve her girişi sahibi için bir giriş alanı olan bir iş rehberi olarak tarif edilebilir. Gerçek idari veri tabanı için zaten halledilir.

Böylece, sokak adı ile tüm işletmeler, düzenlemek iş, liste işletmelerin listesi teklif iş olarak oturum oluşturmak ve, ve ben sadece işlevselliği uyması için nasıl arıyorum - Ben bütün API dışarı çalıştı ve yerde zaten var düşünürsek MVC deseni ve kolayca uzatılabilir bir Kohana uygulama yapısı içine.

  • Eğer Kohana 3 üzerine inşa edilmiş bir log-in alanı, tercihen Open Source yüzden ben bunu nasıl bir göz alabilir ... dizinleri, çevrimiçi topluluklar gibi "veritabanı-ağır" uygulamaları gerçek hayattan örnekler biliyor musunuz?

  • Hem de sadece bir iş rehberi sayfası işlemek mümkün, ama ayrı sayfalarda daha fazla ürünler Kohana projesinde son kullanıcılar için genişletilebilir bir giriş alanı yapısı nasıl sözleşmeler veya en iyi uygulamalar var mı?

  • Eğer Kohana ile karmaşık uygulamalar oluşturmaya üzerinde herhangi bir iyi kaynaklar biliyor musunuz?

  • Eğer benzer bir şey inşa ettiniz ve bana bir proje yapısı üzerine tavsiyeler verebilir?

Bounty

Bana bir çok örnek veren bazı iş mantığı ile bir Kohana uygulama ile bana verilen çünkü @ antpaw için ödül veren ediyorum. Yanı sıra mükemmel bir giriş için Pixel Geliştirici @ Cheers - sık sık olduğu gibi, ben bir bir ödül bölünmüş isterdim istiyorum!

2 Cevap

i giriş için Kohana ile birlikte auth modülünü kullanmak istiyorsunuz. Bu size kurulum olası izni seçenekleri olabilir ve daha sonra kullanıcılara ilişkin roller tablo verecektir. Bundan sonra kullanıcı gerekli rolü olup olmadığını her kontrolörün __ yapıcısı () veya action_function () iç kontrol edebilirsiniz örneğin ile -> () işlevi vardır. Eğer tablolar arasında birçok ilişki var çünkü Ayrıca, ORM modülü, onun sadece harika kullanmak gerekir. Ayrıca bir ORM nesne içindeki __ get () yöntemi son derece kullanışlı olabilir.

Bir if açıklamada NULL yeni parametre ayarı ve bunun için kontrol ederek bir kontrol fonksiyonu uzatmak Onun da oldukça kolay. örneğin Eğer eski bir kaydı düzenleme ya da bir yenisini ekleyerek için tek işlev gerekir.

public funciton action_manage($id = NULL)
{
    $entry = ORM::factory('entry', $id); // if id is null a new entry will be returned 
}

Bu dağınık bir görünüm dizin önlemek için alt klasörler halinde görüşlerini yapısı da önemlidir.

Burada cevap sürü soru, ben elimden geleni yapacağım.

Eğer ben bunu nasıl bir göz alabilir Kohana 3 üzerine inşa edilmiş bir log-in alanı ile ... dizinleri, çevrimiçi topluluklar gibi "veritabanı-ağır" uygulamaları gerçek hayattan örnekler biliyor musunuz?

Orada birkaç örnek uygulamalar var. Woody Gilk (Kohana kurucusu) github üzerine kendi kişisel web sitesine kodunu yayınladı. Giriş alanı için o bir çerez değeri atar. Kohana 3 / 2.4 güvenli yapar ve oturumları için gereksinimini ortadan kaldırır tanımlama işareti. Her zaman kullanmak oturumları ve çerezleri de kullanan bir kimlik doğrulama kütüphanesinde inşa böylece bu herkesin gönlüne kadar olmayabilir.

İlginizi çekebilir diğer bazı projeler şunlardır:

  • Shindig - Kohana 3 için Hafif blog modülü
  • Kohanut - genişletilebilir bir CMS Kohana 3 yazılmış

Hem de sadece bir iş rehberi sayfası işlemek mümkün, ama ayrı sayfalarda daha fazla ürünler Kohana projesinde son kullanıcılar için genişletilebilir bir giriş alanı yapısı nasıl sözleşmeler veya en iyi uygulamalar var mı?

Ben doğru anlamak Eğer bu sayfaların her biri için bir giriş kutusu oluşturmak istiyor? Biz HMVC yılında H yararlanabilirsiniz olarak bu Kohana 3 ile kolaydır. Sam de Fressyinet ne bu tüm iBuilding Tech Blog hakkında ayrıntılı bir makale yazdı. Scaling Web Applications with HMVC.

Ne o zaman yapabileceğiniz giriş kontrolörü veya eylem bir iç isteği gerçekleştirmek ve görünümü sayfanın içine yanıtı dökümü olduğunu.

$login = Request::factory('login')->execute()->response;

$ Login şimdi her yerde sizin gibi koyabilirsiniz giriş formunu içerir. Sen isteği bu kod parçası yararlı olabilir neden olan iç ise farklı bir tepki dönmek isteyebilirsiniz:

if (Request::instance() !== $this->request)
{
    print 'Internal called made with Request::factory';
}

Eğer Kohana ile karmaşık uygulamalar oluşturmaya üzerinde herhangi bir iyi kaynaklar biliyor musunuz?

Ne kadar karmaşık uygulamalar oluşturmak için size gösteren belgeler orada olacak değil. Kohana toplumun görünümü bir PHP geliştiricisi iseniz ve kendiniz için bu sorunları çözmek mümkün olmasıdır. Eğer, iyi o zaman Kohana kullanarak olmamalıdır olamaz.

Eğer benzer bir şey inşa ettiniz ve bana bir proje yapısı üzerine tavsiyeler verebilir?

Eğer Kohana 3 bulur nasıl anlamak sonra dosyaları şeyleri anlamak kolaydır.

|- classes
|-- controller
|-- model
|- views

Örneğin:

Controller_Mathew extends Controller 

mathew.php denilen bir dosya arar:

classes/controller

Altçizgilerin derin dizinleri belirtmek için kullanılır. Örnek:

Controller_Mathew_Davies extends Controller

davies.php denilen bir dosya arar:

classes/controller/mathew/

Gördüğünüz gibi, dizin ayracı olarak denetleyicisi adı eyleminde altını çiziyor. Bu modelleri ve vanilya sınıflar için geçerlidir halkaları.