Bí danh lớp cho không gian tên trong OOP PHP
Giả sử chúng ta có hai lớp Data,
thuộc về các không gian tên khác nhau.
Giả sử trong một lớp nào đó chúng ta cần các đối tượng
của cả hai lớp này:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // tạo đối tượng
$data2 = new \Core\Admin\Data; // tạo đối tượng
}
}
?>
Giả sử chúng ta quyết định đơn giản hóa việc gọi lớp
thông qua lệnh use. Trong trường hợp này chúng ta
sẽ gặp phải vấn đề: cả hai lớp đều có tên Data,
điều này có nghĩa là chúng ta sẽ có xung đột tên:
<?php
namespace Project;
// Sẽ có xung đột tên:
use \Core\Users\Data; // kết nối lớp đầu tiên
use \Core\Admin\Data; // kết nối lớp thứ hai
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Để giải quyết vấn đề này tồn tại một lệnh đặc biệt
as, cho phép đặt bí danh cho lớp được kết nối
- tên mà lớp này sẽ có thể truy cập được trong tệp này. Hãy
thực hiện đổi tên các lớp Data của chúng ta:
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
Đơn giản hóa mã sau bằng cách sử dụng
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Đơn giản hóa mã sau bằng cách sử dụng
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>