gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:51:50 27 4
gpt4 key购买 nike

我想在编码方面我是一个学习缓慢的人,我已经学习 PHP 几年了,但我仍然不了解类,所以现在是我努力至少了解它们的时候了好一点。

我对所有事情都使用函数。人们经常在这里对我发表评论,他们无法相信我有一个社交网站而且我不使用类(class)。

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

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

最佳答案

简单(事实上,极其简单),类允许您以逻辑单元组织代码,并为用户创建的对象提供容器和模板。

假设您有一辆车...汽车 jar 有容量和里面的人。

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; }
}

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

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

$bobCar = new Car(4);
$bobCar->addPerson("Bob");
$bobCar->addPerson("Jake");

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

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

echo implode(',', $bobCar->getPeople()); // Bob,Jake
echo $bobCar->getCapacity(); // 4

我可能还想要一辆货车,它会有一个额外的门属性:

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; }
}

现在让我们使用那辆货车:

$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

现在您可能会看到我们如何将这些概念应用于创建,例如 DBTableUser 类。


事实上,如果不深入了解面向对象编程的概念(抽象、封装、继承、多态),就很难真正开始解释为什么类可以简化人们的生活。

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

PHP 5 对象、模式和实践

PHP 5 Objects, Patterns, and Practice 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 获得

关于php - 你能帮助我更好地理解 PHP 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com