你能帮助我更好地理解PHP类吗?

Jas*_*vis 3 php class

我是一个慢学习者,我想在编码方面,我已经学习PHP几年了,我仍然不理解课程,所以我需要付出一些努力来至少更好地理解它们.

我使用函数来做所有事情.人们经常在这里给我发表评论说他们不相信我有一个社交网站而且我不使用课程.

我真的不明白他们的好处你能解释一下这个好处,除了它可以让多个人轻松处理你的代码吗?

对我来说,似乎只是简单的任务使类复杂化

And*_*ore 18

简单地(实际上,非常简单),类允许您以逻辑单元组织代码,以及为用户创建的对象提供容器和模板.

假设你有一辆车......一辆车可以容纳人,里面有人.

class Car {
    private $people = array();
    private $capacity;

    function __construct($capacity) { $this->capacity = $capacity; }

    function addPerson($name) {
        if(count($this->people) >= $this->capacity) {
            throw new Exception("Car is already at capacity");
        } else {
            $this->people[] = $name;
        }
    }
    function getPeople() { return $this->people; }
    function getCapacity() { return $this->capacity; }
}
Run Code Online (Sandbox Code Playgroud)

现在,我们可以开始使用这些车:

$aliceCar = new Car(2);
$aliceCar->addPerson("Alice");

$bobCar = new Car(4);
$bobCar->addPerson("Bob");
$bobCar->addPerson("Jake");
Run Code Online (Sandbox Code Playgroud)

我现在有2辆汽车(实例),它们拥有不同的数据.

echo implode(',', $aliceCar->getPeople()); // Alice
echo $aliceCar->getCapacity(); // 2

echo implode(',', $bobCar->getPeople()); // Bob,Jake
echo $bobCar->getCapacity(); // 4
Run Code Online (Sandbox Code Playgroud)

我可能还想要一辆面包车,它将为门提供额外的属性:

class Van extends Car {
    private $num_doors;

    function __construct($capacity, $num_doors) {
        parent::__construct($capacity); // Call the parent constructor
        $this->num_doors = $num_doors;
    }

    function getNumDoors() { return $this->num_doors; }
}
Run Code Online (Sandbox Code Playgroud)

现在让我们使用那辆面包车:

$jakeVan = new Van(7, 5);

// Van is ALSO a Car
$jakeVan->addPerson("Ron"); //Jake is with Bob now, so his son is driving the Van
$jakeVan->addPerson("Valery") //Ron's girlfriend

echo implode(',', $jakeVan->getPeople()); // Ron,Valery
echo $jakeVan->getCapacity(); // 7
echo $jakeVan->getNumDoors(); // 5
Run Code Online (Sandbox Code Playgroud)

现在也许您可以看到我们如何将这些概念应用于创建,例如,a DBTableUser类.


实际上,很难真正开始解释为什么类在不涉及面向对象编程(抽象,封装,继承,多态)的概念的情况下简化了一个人的生活.

我建议你阅读以下书籍.它将帮助您掌握OOP的核心概念,并帮助您理解为什么对象真正让您的生活更轻松.如果不理解这些概念,很容易将类视为另一个复杂问题.

PHP 5对象,模式和实践

PHP 5对象,模式和实践http://ecx.images-amazon.com/images/I/51BF7MF03NL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

可在Amazon.com上获得