Php 如何创建特定对象的数组?

Php 如何创建特定对象的数组?,php,foreach,Php,Foreach,我是PHP中OOP的新手,正在尝试用它编写一个站点。该网站是一个基本的flash游戏网站,有跟踪游戏的类别。我的第一步是创建一个基本的MVC设置并列出所有类别。问题是我不知道如何创建一个包含所有类别的数组。我可以将此添加到控制器中吗?我应该在模型中添加新方法吗?让我知道,代码如下 index.php(控制器) 模型/category.php(模型) 视图/home.php(视图) 所有类别的列表: (身份证号码:) 很简单,你只是缺少了把所有东西粘在一起的胶水。这通常被描述为“业务逻

我是PHP中OOP的新手,正在尝试用它编写一个站点。该网站是一个基本的flash游戏网站,有跟踪游戏的类别。我的第一步是创建一个基本的MVC设置并列出所有类别。问题是我不知道如何创建一个包含所有类别的数组。我可以将此添加到控制器中吗?我应该在模型中添加新方法吗?让我知道,代码如下

index.php(控制器)


模型/category.php(模型)


视图/home.php(视图)

所有类别的列表:
  • (身份证号码:)

很简单,你只是缺少了把所有东西粘在一起的胶水。这通常被描述为“业务逻辑”。您当前拥有的“模型”实际上是您的数据存储层。您的模型需要使用它来向控制器返回它需要为视图提供的内容


在代码中,您有几种选择。一种是控制器使用数据类,您必须组装视图想要使用的数组。如果没有其他控制器需要这样做,这是最好的。另一个解决方案是添加一些模型代码。这使其他控制器能够调用相同的模型以获取相同的数据,但如果您有其他类需要相同的过程,则可能会重复代码。第三种解决方案是扩展数据模型以提供集合视图。然后,模型代码成为一个简单的转换层,在控制器想要什么样的集合和向数据模型请求集合之间进行转换。它甚至可以简单地放在控制器中。

就像Staticsan说的,有很多地方可以放它,还有关于它的书籍。我会修改构造函数,这样如果你不给它参数,它就不会进行查询。然后我将使用一个静态方法,它自己查询所有类别(或某个子集),然后组装一个类别对象数组以返回

可能更好的方法是编写一个名为CategoryFactory的类,该类只负责生成和返回这些对象。从那里(或从静态方法工厂),您可以确保只执行一个查询

MVC并不是web应用程序体系结构的最终目标,Fowler和Alur等人深入探讨了一些不光彩的细节

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

    if (isset($_GET['page']))
    {
    }
    else
    { //display home page
        require_once 'views/home.php';
    }
?>
<?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;
        }
    }
?>
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>