1. O que é dependência?
Suponha que haja uma classe de pedido Order e uma classe de inventário Inventory. A classe de pedido precisa da classe de estoque para verificar o status do estoque do item e atualizar o estoque. Nesse caso, a classe de ordem depende da classe de estoque. A classe de pedido chamará o método da classe de inventário para concluir operações específicas de verificação e atualização de inventário
<?php
// 定义库存类
class Inventory {
public function checkStock($productId) {
// 检查库存逻辑
// ...
return true;
}
}
// 定义订单类
class Order {
public function placeOrder($productId) {
// 创建库存对象
$inventory = new Inventory();
if ($inventory->checkStock($productId)) {
echo "可以下单";
} else {
echo "库存不足,无法下单!";
}
}
}
$order = new Order();
// 调用订单方法下单
$order->placeOrder(123456);
2. O que é injeção?
Injeção refere-se ao processo de passar as dependências de um objeto para o objeto através de meios externos. A injeção pode ser dividida em três formas: injeção de construtor, injeção de propriedade e injeção de método.
// 定义订单类
class Order {
private $inventory;
public function __construct(Inventory $inventory) {
$this->inventory = $inventory;
}
public function placeOrder($productId) {
if ($this->inventory->checkStock($productId)) {
$this->inventory->updateStock($productId);
echo "订单已成功下单!";
} else {
echo "库存不足,无法下单!";
}
}
}
// 创建库存对象
$inventory = new Inventory();
// 创建订单对象并注入库存对象
$order = new Order($inventory);
// 调用订单方法下单
$order->placeOrder(123456);
3. O que é injeção de dependência?
A injeção de dependência refere-se a mover as dependências de um objeto do próprio objeto para outro local, e o contêiner externo gerencia e injeta essas dependências. Ou seja, o objeto não é mais responsável por criar ou encontrar dependências, mas recebe dependências por meio de construtores, parâmetros de métodos ou injeção de propriedades. A vantagem disso é que torna os objetos mais independentes, reutilizáveis e fáceis de testar, pois eles só precisam focar em suas próprias responsabilidades e não se preocupam em como criar ou gerenciar dependências.
<?php
// 定义库存类
class Inventory {
public function checkStock($productId) {
// 检查库存逻辑
// ...
return true;
}
}
// 定义订单类
class Order {
private $inventory;
public function __construct(Inventory $inventory) {
$this->inventory = $inventory;
}
public function placeOrder($productId) {
if ($this->inventory->checkStock($productId)) {
$this->inventory->updateStock($productId);
echo "订单已成功下单!";
} else {
echo "库存不足,无法下单!";
}
}
}
// 创建库存对象
$inventory = new Inventory();
// 创建订单对象并注入库存对象
$order = new Order($inventory);
// 调用订单方法下单
$order->placeOrder(123456);