Php 理解类(它们的用途)

Php 理解类(它们的用途),php,class,Php,Class,我有一个关于如何使用类的快速问题。我是一个编程初学者,我给自己设定了一个任务,创建一个基于网络的小游戏来学习。在游戏中,我希望有不同的单位类型(如剑客、骑兵、弓箭手)。我被告知我应该为每种类型的单元创建一个单独的类,但是我也被告知创建一个类,如“类单元”。使用类的正确方法是什么?我道歉,如果这是含糊不清的,但我想不出一个更好的方式来表达它。在本网站上搜索了其他与课堂相关的问题后,这些问题似乎并未涵盖此类用法 class unit { $unitName = ""; $unitSpeed = "

我有一个关于如何使用类的快速问题。我是一个编程初学者,我给自己设定了一个任务,创建一个基于网络的小游戏来学习。在游戏中,我希望有不同的单位类型(如剑客、骑兵、弓箭手)。我被告知我应该为每种类型的单元创建一个单独的类,但是我也被告知创建一个类,如“类单元”。使用类的正确方法是什么?我道歉,如果这是含糊不清的,但我想不出一个更好的方式来表达它。在本网站上搜索了其他与课堂相关的问题后,这些问题似乎并未涵盖此类用法

class unit {

$unitName = "";
$unitSpeed = "";
$unitHealth = "";
$unitDamage = "";

}


一种方法是使用子类。请看这里:

您将创建一个名为“unit”的基类,该基类将包含所有类型的单元之间通用的所有信息

然后,您将为每种类型的单元创建一个类,该类包含使这种单元不同于其他单元的任何逻辑

使用这种方法,您可以通过不重复所有单元通用的代码(可能会发生在3个不同的类中)来实现“干涸”,并且在代码属于类文件的单元之间存在差异的情况下(如果只使用一个“单元”类,您可能必须使用条件来完成相同的任务)也很灵活

下面是基本代码的外观:

class Unit {
//Defaults for all units
$unitName = ""; 
$unitSpeed = "1";
$unitHealth = "1";
$unitDamage = "1";

}

class Archer extends Unit{

$unitName = "archer";

}

class Cavalry extends Unit {

$unitName = "cavalry";

}

我组织代码的更好方法如下:

abstract class Unit
{
    public $speed=0;
    public $health=0;
    public $damage=0;
}


class Archer extends Unit
{
}


class Wizard extents Unit
{
    public $mana;
}

class ArcherAdvanced extends Unit
{
    public function __construct() 
    {
        $this->health = 4; 
    }
}
class Game
{
    public  function run()
    {
        $gandalf = new Wizard();
        $legolas = new Archer();
        // then fight!!
    }

}
使用这种结构,您必须始终使用特定的类,但实现它非常容易。为不同的用途添加一些属性(如向导)也很容易

您可以在其他类中使用此选项,例如:

abstract class Unit
{
    public $speed=0;
    public $health=0;
    public $damage=0;
}


class Archer extends Unit
{
}


class Wizard extents Unit
{
    public $mana;
}

class ArcherAdvanced extends Unit
{
    public function __construct() 
    {
        $this->health = 4; 
    }
}
class Game
{
    public  function run()
    {
        $gandalf = new Wizard();
        $legolas = new Archer();
        // then fight!!
    }

}
我希望这能有所帮助。不过,我建议您看看这里:


在ArcherAdvanced类中,当您使用它并执行new ArcherAdvanced()时,您会自动将运行状况设置为value=4。

这在很大程度上取决于您必须执行的操作以及代码需要执行的程度。在这种情况下,我会亲自创建一个“unit”泛型类,在它的
\uu construct()
中,需要一个字符串来定义“unit type”,然后根据我必须实现的内容扩展该类。简而言之,您应该使用类(和对象)来实现一些“模糊”的东西,它们之间可能略有不同,但有许多公共参数(比如您的案例)。谢谢你的解释!在你的情况下,试着问你自己:“一个弓箭手要做什么?还有一个骑士单位?”很可能,他们都会有一些生命值、描述、攻击值、攻击功能,最终还有一些速度或类似的东西。在这种情况下,由于它们有许多公共参数,因此必须创建一个名为“units”的类,下一步是考虑如何实现该类;)为了便于理解,我个人建议您搜索:1)什么是类。2) 如何扩展类。3) 什么是界面。感谢您的回复。这是有道理的。比如说,我希望弓箭手这个职业对健康有不同的价值,我会像这样包括它吗?类Archer扩展单元{public$health=4;}@AlexW:实际上,您需要调用一个函数(类似于构造函数),并且由于Archer正在扩展单元,它已经有一个“$health”属性,因此您可以通过执行以下操作来覆盖它:
$this->health=4。使用“抽象类”是一种非常好的方法,但它也非常先进,如果您是php中OOP的新手,最好先使用一个基本类:PI做一点更新,我希望它能澄清您的问题