Cách tiếp cận tốt nhất để làm việc với các lớp và không gian tên trong php là gì

Có nhiều thứ đối với một ngôn ngữ lập trình hơn là cú pháp và ngữ nghĩa của chính ngôn ngữ đó. Thường cũng có một thư viện tích hợp cho các tác vụ phổ biến nhất và thường có vô số thư viện của bên thứ ba mà bạn có thể xây dựng dựa trên đó. Chúng tôi đã đề cập đến hầu hết lõi ngôn ngữ của PHP và một số thư viện hàm và lớp đi kèm

Trước đây, việc thêm nhiều thư viện vào dự án PHP của bạn liên quan đến việc sao chép mã của họ vào dự án của bạn và tự mình theo dõi mọi thứ nhưng những ngày đó đã qua. Bây giờ có Trình soạn thảo mà chúng tôi đã sử dụng để cài đặt khung Silex trong các ví dụ trước của chúng tôi

Trình soạn thảo không chỉ quản lý các phần phụ thuộc cho bạn, nó còn cung cấp cho bạn một cách dễ dàng để cung cấp mã của riêng bạn trong suốt dự án của bạn. Hiện tại, thông lệ là có một thư mục

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0 chứa tất cả các tệp mã nguồn thực tế của ứng dụng của bạn. Hơn nữa, bạn nên đặt mỗi lớp trong tệp riêng của nó, được đặt tên giống như lớp có
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
1 ở cuối. Bây giờ đây là nơi không gian tên xuất hiện

Cho đến nay, tất cả các lớp và chức năng của chúng tôi đã trôi nổi trong các ứng dụng của chúng tôi, chỉ có sẵn bằng tên của chúng. Trong một dự án phức tạp, điều này có thể nhanh chóng trở thành một vấn đề, đặc biệt nếu bạn có nhiều lớp làm những việc tương tự và có tên giống nhau. Nó cũng có thể dẫn đến xung đột tên với mã của bên thứ ba từ các thư viện. Hãy tưởng tượng bạn có một lớp tên là

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
2 và một số thư viện cũng có một lớp với tên đó. Làm thế nào để PHP biết nên sử dụng cái nào?

Để tránh xung đột tên và để tổ chức mã của chúng ta tốt hơn, chúng ta có thể đặt các lớp và hàm vào các không gian tên

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
3 lớp sống bên trong tệp
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0. Ngay cả cú pháp cũng tương tự, các không gian tên chỉ sử dụng
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
1 làm dấu phân cách thay vì
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
2

Không gian tên áp dụng cho toàn bộ tệp PHP có chứa khai báo

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
3. Tất cả mã trong tệp đó hiện được đặt trong không gian tên
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
4

Lưu ý rằng không có không gian tên

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0 mặc dù chúng tôi có một thư mục
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0. Đó là bởi vì thư mục
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0 chứa không gian tên "toàn cầu", cấp cao nhất của tất cả các không gian tên. Chà, vẫn chưa, nhưng Composer sẽ khắc phục điều đó cho chúng tôi. Đối với mọi dự án, chúng ta nên có tệp
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
8. Nhà soạn nhạc có thể giúp chúng tôi tạo ra nó với
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
9

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

Đối với một dự án cơ bản, bạn có thể bỏ qua hầu hết các câu hỏi hoặc sử dụng các câu trả lời mặc định. Bây giờ, hãy xem có gì bên trong

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
8

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0

Cách dễ nhất để làm cho thư mục

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0 của chúng tôi được Nhà soạn nhạc biết đến là "nơi dành cho mọi thứ" là thêm phần "tự động tải" này vào
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
8

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
2

Điều này yêu cầu Composer sử dụng thư mục

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
0 để tìm tất cả các lớp mà nó chưa biết bằng cách sử dụng tiêu chuẩn "PSR-4". Các chi tiết của tiêu chuẩn đó không quan trọng ngay bây giờ. Về cơ bản nó nói. "bên trong thư mục này, tất cả các không gian tên được đại diện bởi các thư mục con và các lớp là các tệp
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
1. "

Tự động tải là cách của PHP để tự động tìm các lớp và các tệp tương ứng của chúng mà không cần phải

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
05 tất cả chúng theo cách thủ công. Bạn có thể đọc thêm về nó ở đây. Tự động tải cũng là một trong những lý do tại sao mã PHP thường được tổ chức theo lớp vì PHP chỉ hỗ trợ tự động tải cho các lớp chứ không phải các chức năng đơn giản chẳng hạn

Điều duy nhất chúng ta vẫn cần làm là thêm tính năng tự động tải của Trình soạn thảo vào ứng dụng của mình giống như chúng ta đã làm trong các ví dụ về Silex của mình

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
06]. Tệp này tải logic tự động tải của Trình soạn thảo vào dự án của chúng tôi. Sau đó, tất cả các không gian tên của bên thứ ba từ các phần phụ thuộc của chúng tôi cũng như của chính chúng tôi đều có sẵn trong mã của chúng tôi

Sử dụng không gian tên

Để sử dụng một cái gì đó từ một không gian tên khác, chúng ta phải

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
07 nó

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
7

Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
07 kéo một không gian tên khác vào phạm vi hiện tại và cung cấp mọi thứ trong không gian tên đó. Nó cũng phục vụ như một loại tài liệu về những lớp khác mà một tệp PHP cụ thể sẽ yêu cầu, vì vậy thật tốt khi có tất cả các câu lệnh
Package name [/] [lnwdr/my-project]:
Description []:
Author [Leon Weidauer ]:
Minimum Stability []:
License []:

Define your dependencies.

Would you like to define your dependencies [require] interactively [yes]? no
Would you like to define your dev dependencies [require-dev] interactively [yes]? no

{
    "name": "lnwdr/my-project",
    "authors": [
        {
            "name": "Leon Weidauer",
            "email": "leon@lnwdr.de"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes
07 được tổ chức tốt ở đầu các tệp PHP của chúng tôi

Việc sử dụng không gian tên và sử dụng trong PHP là gì?

Không gian tên là vòng loại giải quyết hai vấn đề khác nhau. Chúng cho phép tổ chức tốt hơn bằng cách nhóm các lớp làm việc cùng nhau để thực hiện một nhiệm vụ . Chúng cho phép sử dụng cùng một tên cho nhiều lớp.

Không gian tên trong lớp 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 để sử dụng không gian tên trong một tệp khác trong PHP?

Tệp chứa không gian tên phải khai báo không gian tên ở đầu tệp trước bất kỳ mã nào khác - với một ngoại lệ. từ khóa khai báo. Thêm phần này vào tệp bao gồm của bạn. không gian tên my_ns; .

Không gian tên là gì và bạn sẽ sử dụng nó như thế nào?

Không gian tên là vùng khai báo cung cấp phạm vi cho các mã định danh [tên của loại, hàm, biến, v.v.] bên trong nó . Không gian tên được sử dụng để sắp xếp mã thành các nhóm hợp lý và để ngăn xung đột tên có thể xảy ra, đặc biệt khi cơ sở mã của bạn bao gồm nhiều thư viện.

Chủ Đề