Nasıl belirli bir nesnenin bir dizi oluşturabilirsiniz?

2 Cevap php

Peki ben PHP OOP için yeni ve onunla bir site yazmaya çalışıyorum. Site temel bir flash oyunlar sitesi ve oyunları izlemek için kategorileri vardır. Benim ilk adım, temel MVC kurulum oluşturmak ve tüm kategorileri listelemek için oldu. Sorun ben de tüm kategoriler ile bir dizi oluşturmak için nasıl bilmiyorum. Ben kontrolöre bu ekleyebilir miyim? Ben modeli için yeni bir yöntem ekleyerek olmalıdır? Bana haber ver, kod aşağıda.

index.php (kontrolör)

<?php
    require_once 'database.php';
    require_once 'models/category.php';

    if (isset($_GET['page']))
    {
    }
    else
    { //display home page
        require_once 'views/home.php';
    }
?>

models/category.php (model)

<?php
    class Category
    {
        private $id,$name;

        function __construct($id)
        {
            $category_query = $database_connection->prepare('SELECT id,name FROM categories WHERE id=?');
            $category_query->execute(array($id));
            $category = $category_query->fetch();

            $this->id = $category['id'];
            $this->name = $category['name'];
        }

        function get_id()
        {
            return $this->id;
        }

        function get_name()
        {
            return $this->name;
        }
    }
?>

views/home.php (görünüm)

List of all categories:
<ul>
<?php foreach ($all_categories as $category) { ?>
    <li><?php echo $category->get_name(); ?> (ID: <?php echo $category->get_id(); ?>)</li>
<?php } ?>
</ul>

2 Cevap

Çok basit, sadece hep birlikte koymak için tutkal kaçırıyorsun. Bu genellikle "iş mantığı" olarak tarif edilir. Ne şu anda sizin "modeli" olarak var aslında veri depolama tabakasıdır. Sizin modeli görünümüne vermek gerekenleri denetleyiciye geri dönmek için bu kullanmak gerekiyor.

Kodunda aşağı, size çeşitli alternatifler var. Denetleyicisi görünümü kullanmak istiyor dizi monte etmek zorunda veri sınıfını kullanmak için bir olacaktır. Başka hiçbir denetleyici yapmak gerekir, bu en iyisidir. Başka bir çözüm bunu yapmak için bazı model kodu eklemek olacaktır. Bu aynı verileri almak için aynı model aramak için diğer denetleyicileri sağlar, ama aynı prosedürü gerek diğer sınıfları varsa, kod tekrar. Üçüncü çözüm toplama görünüm sağlamak için veri modeli uzatmaktır. Sonra model kodu denetleyici istiyor ve bunun için veri modeli soran toplama ne tür arasında basit bir çeviri katmanı olur. Hatta kontrolör bırakacak kadar basit olabilir.

Staticsan dediğim gibi, bunu koyabilirsiniz yerlerde bir sürü ve bu konuda yazılmış kitaplar var. Bunu hiçbir argüman verirseniz, hiçbir sorgu yapar ki ben kurucu değiştirmek istiyorum. Sonra tüm kategorilerde (bazı alt) kendi sorgu yapar ve daha sonra geri dönmek için Kategori nesneleri dizisi toplanır statik bir yöntem kullanmak istiyorum ...

Muhtemelen daha iyi bu nesneleri yapma ve iade için sadece sorumlu CategoryFactory adında bir sınıf yazmak için. Oradan (veya statik yöntem fabrikadan) Eğer sadece bir sorgu yapıyoruz emin olabilirsiniz.

MVC tüm web uygulama mimarisi için, Fowler ve Alur ark gölgeli ayrıntısına girmeyeceğim olmak son değildir.