我这样做了吗?

时间:2010-09-03 15:09:01

标签: php

我有RPG游戏。人们可以在那里买一些东西。我为这样的项目创建了一个函数:

function item($id) {
    switch ($id) {
         case 1:
               $name  = 'item name 1';
               $price = 1200;
               break;
     }
}

我做得对吗,你怎么看,这是检索项目信息的最佳方式吗?

8 个答案:

答案 0 :(得分:7)

因为它是一个RPG,如果它不是 microscopic ,你应该把这些信息放在数据库中,然后根据该信息的ID查询你的数据库。

答案 1 :(得分:2)

您是否正在编写所有商品?这意味着要进行任何更改,您需要重新编译它。为什么不使用一些XML,数据库或只是逗号分隔的文本文件?

如果您使用某种存储格式,您还可以制作一个辅助应用程序来实时管理/编辑/添加/删除项目,而不必每次都重新编译代码。

答案 2 :(得分:1)

您也可以将其设为键控数组。

$items = array(
    "1" => array( "name" => "item name 1", "price" => 1200 ),
    "2" => array( "name" => "item name 2", "price" => 600 )
);

然后使用$ items [1] ['name']

访问它

答案 3 :(得分:0)

有一种方法可以给猫皮肤。

鉴于您没有使用关系数据库并且将对所有内容进行硬编码,这应该“正常”但您需要返回某些类型的返回语句来返回数据。如果您计划在没有数据库的情况下执行此操作,则可能希望将“项目”信息作为array返回。明显的缺点是,您必须始终修改该文件,并且无论何时添加新项目都有可能破坏整个应用程序。

XML或文本文件是与关系数据库相关的另一种选择。

我的建议是,学习如何使用数据库,MySQL是一个明智的选择,因为它与PHP配对得很好。

答案 4 :(得分:0)

在这种情况下,我会将您的信息存储在数组中,例如。

$items = array(array("name" => "item name 1", "price" => 1200))

然后当你访问它时你可以做

function item($id)
{
   $name = $items[$id].name;
   $price = $items[$id].price;
}

但是数据库在类似的想法中会更好

答案 5 :(得分:0)

如果您只有少量项目,请将它们放在数组中,这样可以保持简单:

$items=array(
  1=>array('item name 1', 1200),
  2=>array('item name 2', 4600),
  ...
);

否则,根据您的需要以及您拥有的项目数量以及愿意更改的频率,使用存储方法,无论是数据库还是文件。

答案 6 :(得分:0)

如果您的游戏是多人游戏,您可能需要非常认真地考虑如何处理数据。

传输对象是事务性的非常重要。

例如,用户不能购买物品,并在同一时刻断开连接。这可能允许用户产生无限量的物品或金钱。

大多数数据库提供这种传输操作,但某些MMORPG的开销可能有点高,因此这些游戏倾向于使用自定义数据库。

答案 7 :(得分:0)

我同意建议数据库使用的人,你应该在我看来使用MySQL,创建这个表: 物品(ID,NAME,PRICE) 您可以使用alter table命令在将来扩展此表并添加新列。

程序员经常犯下对查询进行硬编码的错误,并且每当他们改变数据库结构时,他们都必须查看他们的源代码。您可以通过编写PHP类来防止这种情况发生,从而防止这种情况发生。该课程应如下所示:

class DatabaseUserTemplate {

    private tableName = null;
    public $columnList = array();

   public function selectCommand($parameters, $filter)
   {

       //implement you code here

   }

   public function insertCommand($parameters)
   {

       //implement you code here

   }

   public function deleteCommand($filter)
   {

       //implement you code here

   }

   public function updateCommand($parameters, $filter)
   {

       //implement you code here

   }

   public function construct($tableName)
   {

       $this->tableName = $tableName;

   }

   private function getColumnList()
   {

       //implement you code here

   }

}

这个类在项目的上层很容易使用。

祝你好运, Lajos Arpad。