\ (Dấu gạch chéo ngược) làm gì trong PHP (5.3+)?


171

Làm gì \trong PHP?

Ví dụ, CSRF4PHP\FALSE, \session_id\Exception:

public function __construct($timeout=300, $acceptGet=\FALSE){
    $this->timeout = $timeout;
    if (\session_id()) {
        $this->acceptGet = (bool) $acceptGet;
    } else {
        throw new \Exception('Could not find session id', 1);
    }
}

1
@mario chủ đề stackoverflow rất đẹp. Cảm ơn vì đường link :)
Alfred

Tôi đoán câu hỏi này nên được đóng lại, nhưng tôi không thể tự mình đóng chủ đề ..
Alfred

5
Đó là một bản sao, nhưng không phải là một câu hỏi tồi. Nhưng bạn có thể thêm "dấu gạch chéo ngược" vào tiêu đề để việc tìm kiếm người khác trở nên dễ dàng hơn.
mario

1
Điều quan trọng là phải nhận ra, họ không bắn sứ giả nữa. Khi bạn tìm ra nó là gì, đừng đổ lỗi cho chúng tôi :) OH KHÔNG, TÔI TUYỆT VỜI.
Tim Post

Câu trả lời:


246

\ (dấu gạch chéo ngược) là dấu phân cách không gian tên trong PHP 5.3.

A \trước khi bắt đầu một chức năng đại diện cho Không gian tên toàn cầu .

Đặt nó ở đó sẽ đảm bảo rằng hàm được gọi là từ không gian tên toàn cục, ngay cả khi có một hàm có cùng tên trong không gian tên hiện tại.


1
Cảm ơn! bạn đã tìm thấy nó bằng cách sử dụng google hoặc bạn đã biết điều này: P?
Alfred

6
Tìm thấy nó thông qua googling thông minh. Tôi chưa có cơ hội sử dụng PHP 5.3 và quan tâm đến câu trả lời. Mất một phút nhưng tôi đã tìm thấy nó.
Alan Geleynse

1
Bắt đầu với php backslashnó đã dẫn tôi đến một bài viết về sự sụp đổ của việc chọn nó làm dấu phân cách không gian tên, sau đó php namespaceđưa cho tôi tài liệu.
Alan Geleynse

20
Googling "php backslash before function" đã đưa tôi đến đây.
igneizard

4
@igneizard googling "Tôi là một dev frontend và PHP thật đáng sợ" đã đưa tôi đến đây
Telary 15/2/19

22

Không gian tên

Trong PHP 5.3+, \biểu tượng dấu gạch chéo ngược được sử dụng trong các không gian tên. Nó là biểu tượng bắt đầu để chỉ ra một không gian tên và cũng đóng vai trò là dấu phân cách giữa các tên của không gian tên phụ.

Xem tài liệu chính thức về không gian tên .

Opcache

Ngoài ra, trong PHP 7.0+, một số chức năng được thay thế bằng opcodes bởi OPCache , điều này làm cho các chức năng cụ thể này chạy nhanh hơn rất nhiều. Tuy nhiên, điều này chỉ hoạt động khi các chức năng được đặt trong không gian tên gốc. Xem cuộc thảo luận về chủ đề này. Vì vậy, bên cạnh không gian tên, \gián tiếp cũng ảnh hưởng đến tối ưu hóa mã.

Các hàm riêng sau được hưởng lợi từ hiệu ứng này:

"array_slice"
"assert"
"boolval"
"call_user_func"
"call_user_func_array"
"chr"
"count"
"defined"
"doubleval"
"floatval"
"func_get_args"
"func_num_args"
"get_called_class"
"get_class"
"gettype"
"in_array"
"intval"
"is_array"
"is_bool"
"is_double"
"is_float"
"is_int"
"is_integer"
"is_long"
"is_null"
"is_object"
"is_real"
"is_resource"
"is_string"
"ord"
"strlen"
"strval"

21

Để làm rõ sự nhầm lẫn tiềm ẩn:

Dấu gạch chéo ngược không ngụ ý kế thừa lớp .

Trong phần tiếp theo, Animal, Dog, Shepherdkhông phải là lớp học, nhưng chỉ đơn giản là không gian tên . Có nghĩa là một cái gì đó được sử dụng để nhóm tên với nhau để tránh xung đột đặt tên .

$myDog = new \Animal\Dog\Shepherd\GermanShepherd();

Các \phương tiện hàng đầu Animalđã được tuyên bố trong phạm vi toàn cầu.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.