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

标签 php foreach

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

index.php( Controller )

<?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(模型)

<?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( View )

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>

最佳答案

很简单,你只是缺少将它们组合在一起的粘合剂。这通常被描述为“业务逻辑”。您当前的“模型”实际上是您的数据存储层。您的模型需要使用它来将需要提供给 View 的内容返回给 Controller 。

在代码中,您有多种选择。一种方法是 Controller 使用数据类,您必须组装 View 想要使用的数组。如果没有其他 Controller 需要这样做,这是最好的。另一个解决方案是添加一些模型代码来做到这一点。这使得其他 Controller 能够调用相同的模型来获取相同的数据,但如果您有其他需要相同过程的类,则您将重复代码。第三个解决方案是扩展数据模型以提供 Collection View 。然后,模型代码成为 Controller 想要的集合类型与向数据模型询问的简单转换层。它甚至可能很简单,可以留在 Controller 中。

关于php - 如何创建特定对象的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336225/

相关文章:

php - Wordpress 中的字符串连接

angularjs - 从内部 ng-repeat 访问 ng-repeat $index

php - 垂直对齐 div 但保持水平位置不变

javascript - 如何使用 vimeo 嵌入代码创建自定义的eekTo播放器界面?

php - Laravel 4 - Blade 模板 - 如何正确链接到路由?

php - 如何组合具有不同数组结果的 2 个 Foreach 循环?

for-loop - 为什么闭包中允许使用 'for .. in'?

powershell - 在 Get-VM 上构建工作 foreach 循环

c# - 是否在此 foreach 循环中创建了垃圾?

php - 注销后 session 变量仍然存在