Không gian tên chung PHP

Thư viện này cung cấp một không gian tên cho các hàm được gọi trên toàn cầu, như các hàm tích hợp PHP

Điều này nghe có vẻ kỳ lạ, vì vậy hãy để tôi giới thiệu một ví dụ để cho thấy những gì nó có thể làm

Ví dụ

Hãy tưởng tượng rằng bạn có một ứng dụng sử dụng rand(0, 1) và bạn muốn khẳng định điều gì sẽ xảy ra khi nó trả về 0 hoặc

composer require rogervila/global-namespace
0

Hãy xây dựng lớp học đó

class App
{
    public function run()
    {
        $result = rand(0, 1);

        if ($result == 0) {
            // do something when $result is 0
        } else {
            // do something else when $result is 1
        }
    }
}

Nếu bạn tạo một bài kiểm tra để xác nhận kết quả, bạn sẽ tìm thấy nút chặn. Làm cách nào chúng tôi có thể mô phỏng rand() để buộc nó trả về 0 hoặc 1?. Gói này cung cấp một giải pháp cho câu hỏi này

Đầu tiên, yêu cầu gói này trên ứng dụng của bạn

composer require rogervila/global-namespace

Bây giờ, hãy cập nhật ứng dụng của bạn thành tiền tố

composer require rogervila/global-namespace
1 với không gian tên chung

composer require rogervila/global-namespace
2 sẽ chỉ gọi hàm PHP tích hợp để hành vi ứng dụng của bạn sẽ không thay đổi

use PHP\PHP;

class App
{
    public function run()
    {
        $result = PHP::rand(0, 1);
        //...
    }
}

Điều này hoạt động như mong đợi nhưng vẫn chưa hoàn toàn có thể kiểm tra được vì phần phụ thuộc

composer require rogervila/global-namespace
3 được mã hóa cứng và không thể giả lập

Hãy thêm nó vào hàm tạo để chúng ta có thể sử dụng bất kỳ triển khai

composer require rogervila/global-namespace
3 nào

________số 8_______

Đẹp. Giờ đây, bạn có thể mô phỏng

composer require rogervila/global-namespace
1 bằng Mockery và xác nhận mã ứng dụng

final class AppTest extends \PHPUnit\Framework\TestCase
{
    public function test_rand_returns_one()
    {
        // Create a mock of the package class
        $php = Mockery::mock(\PHP\PHP::class);

        // Define its return value
        $php->shouldReceive('rand')
            ->once()
            ->andReturn(1);

        // Now rand() always returns 1
        $this->assertEquals(
            1,
            $php::rand()
        );

        // Create the instance with the mocked PHP implementation
        $app = new App($php);

        // Do your application assertions here
        // ...
    }
}

Kiểm tra ứng dụng demo này để có ví dụ đầy đủ hơn

Về

Thư viện này gọi bất kỳ chức năng toàn cầu nào, không chỉ những chức năng được tích hợp sẵn

use PHP\PHP;

// PHP Built-in functions
PHP::http_build_query(['foo' => 'bar']); // returns 'foo=bar'
PHP::json_encode(['foo' => 'bar']); // returns '{"foo": "bar"}'
PHP::json_decode('{"foo": "bar"}'); // return ['foo' => 'bar']
// etc...


// For WordPress projects
PHP::wp_redirect('/') // redirects to home
// etc...

// Literaly, any function, built-in or not, could be listed here

Lớp trợ giúp

Nếu bạn không muốn sử dụng Mockery hoặc nếu bạn đang làm việc trên môi trường thử nghiệm không phù hợp với nó, bạn có thể sử dụng một số lớp trợ giúp đi kèm với gói này

Không gian tên toàn cầu nghĩa là gì?

Không gian tên chung là liên kết các hệ thống tệp từ bất kỳ số lượng thiết bị lưu trữ tệp nào , chẳng hạn như các máy chủ sử dụng NFS (hệ thống tệp mạng) .

Toàn cầu có nghĩa là gì trong PHP?

Biến toàn cục đề cập đến bất kỳ biến nào được xác định bên ngoài hàm . Các biến toàn cục có thể được truy cập từ bất kỳ phần nào của tập lệnh i. e. bên trong và bên ngoài chức năng. Vì vậy, một biến toàn cục có thể được khai báo giống như các biến khác nhưng nó phải được khai báo bên ngoài định nghĩa hàm.

Không gian tên PHP là gì?

Không gian tên là khối mã được gắn nhãn phân cấp chứa mã PHP thông thường . Một không gian tên có thể chứa mã PHP hợp lệ. Không gian tên ảnh hưởng đến các loại mã sau. các lớp (bao gồm tóm tắt và đặc điểm), giao diện, chức năng và hằng số. Không gian tên được khai báo bằng cách sử dụng từ khóa không gian tên.

Làm cách nào để gọi một không gian tên trong PHP?

Không gian tên được khai báo ở đầu tệp bằng cách sử dụng từ khóa không gian tên. .
cú pháp. Khai báo một không gian tên gọi là Html. .
cú pháp. Khai báo một không gian tên có tên là Html bên trong một không gian tên có tên là Code. .
Ví dụ. Sử dụng các lớp từ không gian tên Html. .
Thí dụ. .
Thí dụ. .
Ví dụ