Php __dòng__

Hằng số là tên hoặc mã định danh cho một giá trị đơn giản. Giá trị của hằng số thì không thể thay đổi trong quá trình thực thi tập lệnh

Theo mặc định, hằng số phân biệt chữ hoa chữ thường. Theo quy ước, hằng số luôn luôn là chữ hoa

Một cái tên hằng số bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới

Nếu bạn đã định nghĩa một hằng số, nó không thể thay đổi hoặc không xác định (không xác định)

Để định nghĩa một hằng số, bạn phải sử dụng hàm define() và bạn chỉ cần định tên của hằng số để lấy giá trị của nó

Not same as with the biến, bạn không cần phải khai báo hằng số bắt đầu với $

Bạn có thể sử dụng hàm constant() để đọc giá trị của hằng nếu bạn muốn lấy tên của hằng một cách linh hoạt

Hàm hằng()

Giống như tên gọi của nó, chức năng này sẽ trả về giá trị của hằng số

Điều này rất hữu ích khi bạn muốn lấy giá trị của hằng số, nhưng bạn không biết tên của nó, tức là nó được lưu trữ trong một biến hoặc được trả về bởi một hàm

Only the data type of boolean, integer, float and new string could be contain in the constant number

Sự khác nhau giữa hằng số và biến

  • Không cần phải khai báo ký tự $ trước một hằng số, trong khi đó cần phải khai báo ký tự $ trước một biến
  • Hằng số không thể được định nghĩa bằng cách cho phép gán đơn giản, chúng chỉ có thể được định nghĩa bằng cách sử dụng hàm define()
  • Hằng số có thể được định nghĩa và truy cập ở bất cứ đâu mà không liên quan đến các quy tắc phạm vi truy cập giống như biến
  • Khi các hằng số đã được gán giá trị, không thể định nghĩa lại hoặc không xác định (không xác định)

Tên hằng số hợp lệ và không hợp lệ

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");

Hằng số ma thuật PHP

PHP cung cấp một số lượng lớn các hằng số được định nghĩa trước cho bất kỳ tập lệnh nào mà nó chạy

Có năm hằng số ma thuật thay đổi tùy thuộc vào nơi chúng được sử dụng. Ví dụ. value of __LINE__ phụ thuộc vào dòng được sử dụng trong tập lệnh của bạn. Các hằng số đặc biệt này không phân biệt chữ hoa chữ thường

Một vài hằng số ma thuật PHP được trình bày trong bảng dưới đây

STTMô tả 1

__DÒNG__

Số dòng hiện tại của tệp

2

__TẬP TIN__

Đường dẫn đầy đủ và tên của tệp. Nếu được sử dụng bên trong một tệp bao gồm, tên của tệp được bao gồm sẽ được trả lại. Move from PHP 4. 0. 2, __FILE__ luôn chứa một đường dẫn tuyệt đối trong khi ở các phiên bản cũ hơn, nó chứa một đường dẫn tương đối trong một số trường hợp

3

__CHỨC NĂNG__

tên chức năng. (Đã thêm vào PHP 4. 3. 0) Kể từ PHP 5, hằng số này trả về tên hàm như được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4, giá trị của nó luôn luôn được viết bình thường

4

__LỚP__

Tên lớp. (Đã thêm vào PHP 4. 3. 0) Kể từ PHP 5, hằng số này trả về tên lớp như được khai báo (phân biệt chữ hoa chữ thường). Trong PHP 4, giá trị của nó luôn luôn được viết bình thường

5

__PHƯƠNG PHÁP__

Layer method name. (Đã thêm trong PHP 5. 0. 0) Tên phương thức được trả về như được khai báo (phân biệt chữ hoa chữ thường)

Đặt hằng số trong PHP cũng dễ dàng như sử dụng hàm xác định, nhưng PHP tạo một vài hằng số trong mọi tập lệnh cho bạn, hầu hết giúp ích cho mục đích gỡ lỗi (tốt, đó thường là lần duy nhất tôi sử dụng chúng). Những hằng số này được gọi là "hằng số kỳ diệu. "

Hằng ma thuật có một cú pháp hài hước, đặt hai dấu gạch dưới trước và sau biểu diễn từ của hằng. Đây là những hằng số kỳ diệu của PHP

Các đặc điểm là một cơ chế để tái sử dụng mã trong các ngôn ngữ kế thừa đơn lẻ như PHP. Một Đặc điểm nhằm giảm bớt một số hạn chế của thừa kế đơn lẻ bằng cách cho phép nhà phát triển sử dụng lại các bộ phương thức một cách tự do trong một số lớp độc lập sống trong các hệ thống phân cấp lớp khác nhau. Ngữ nghĩa của sự kết hợp giữa Đặc điểm và lớp được xác định theo cách làm giảm độ phức tạp và tránh các vấn đề điển hình liên quan đến đa kế thừa và Mixins

Một Đặc điểm tương tự như một lớp, nhưng chỉ nhằm mục đích nhóm các chức năng theo cách chi tiết và nhất quán. Không thể tự khởi tạo một Đặc điểm. Nó là sự bổ sung cho sự kế thừa truyền thống và cho phép cấu thành hành vi theo chiều ngang;

Ví dụ #1 Ví dụ về đặc điểm

trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
0

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
1

Quyền ưu tiên

Thành viên kế thừa từ lớp cơ sở bị ghi đè bởi thành viên được chèn bởi Trait. Thứ tự ưu tiên là các thành viên từ các phương thức Trait của lớp hiện tại sẽ ghi đè lên các phương thức kế thừa

Ví dụ #2 Ví dụ về thứ tự ưu tiên

Phương thức kế thừa từ lớp cơ sở bị ghi đè bởi phương thức được chèn vào MyHelloWorld từ SayWorld Trait. Hành vi này giống với các phương thức được định nghĩa trong lớp MyHelloWorld. Thứ tự ưu tiên là các phương thức từ lớp hiện tại ghi đè lên các phương thức Trait, từ đó ghi đè lên các phương thức từ lớp cơ sở

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
2

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
3

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
4

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
5

Ví dụ trên sẽ xuất ra

Ví dụ #3 Ví dụ về thứ tự ưu tiên thay thế

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
6

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
7

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
8

Ví dụ trên sẽ xuất ra

Nhiều đặc điểm

Nhiều Đặc điểm có thể được chèn vào một lớp bằng cách liệt kê chúng trong câu lệnh

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
00, được phân tách bằng dấu phẩy

Ví dụ #4 Sử dụng nhiều đặc điểm

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
01

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
02

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
03

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
04

Ví dụ trên sẽ xuất ra

Giải quyết xung đột

Nếu hai Đặc điểm chèn một phương thức có cùng tên, thì sẽ xảy ra lỗi nghiêm trọng nếu xung đột không được giải quyết rõ ràng

Để giải quyết xung đột đặt tên giữa các Đặc điểm được sử dụng trong cùng một lớp, toán tử

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
05 cần được sử dụng để chọn chính xác một trong các phương thức xung đột

Vì điều này chỉ cho phép một phương thức loại trừ, toán tử

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
06 có thể được sử dụng để thêm bí danh cho một trong các phương thức. Lưu ý toán tử
// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
06 không đổi tên phương thức và nó cũng không ảnh hưởng đến bất kỳ phương thức nào khác

Ví dụ #5 Giải quyết xung đột

Trong ví dụ này, Talker sử dụng các đặc điểm A và B. Vì A và B có các phương thức xung đột nên nó xác định sử dụng biến thể của smallTalk từ đặc điểm B và biến thể của bigTalk từ đặc điểm A

Aliased_Talker sử dụng toán tử

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
06 để có thể sử dụng triển khai bigTalk của B dưới một bí danh bổ sung
// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
09

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
10

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
11

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
12

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
13

Thay đổi phương thức hiển thị

Sử dụng cú pháp

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
06, người ta cũng có thể điều chỉnh mức độ hiển thị của phương thức trong lớp trưng bày

Ví dụ #6 Thay đổi phương thức hiển thị

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
6

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
16

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
17

Đặc điểm tổng hợp từ đặc điểm

Giống như các lớp có thể sử dụng các đặc điểm, các đặc điểm khác cũng vậy. Bằng cách sử dụng một hoặc nhiều đặc điểm trong một định nghĩa đặc điểm, nó có thể bao gồm một phần hoặc toàn bộ các thành viên được xác định trong các đặc điểm khác đó

Ví dụ #7 Các đặc điểm được tổng hợp từ các đặc điểm

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
01

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
19

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
20

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
21

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
22

Ví dụ trên sẽ xuất ra

Thành viên đặc điểm trừu tượng

Các đặc điểm hỗ trợ việc sử dụng các phương thức trừu tượng để áp đặt các yêu cầu đối với lớp trưng bày. Các phương thức công khai, được bảo vệ và riêng tư được hỗ trợ. Trước PHP 8. 0. 0, chỉ các phương thức trừu tượng công khai và được bảo vệ mới được hỗ trợ

thận trọng

Một lớp cụ thể đáp ứng yêu cầu này bằng cách định nghĩa một phương thức cụ thể có cùng tên;

Ví dụ #8 Thể hiện Yêu cầu bằng Phương thức Trừu tượng

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
23

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
24

Thành viên đặc điểm tĩnh

Các đặc điểm có thể xác định các biến tĩnh, phương thức tĩnh và thuộc tính tĩnh

Ghi chú

Kể từ PHP 8. 1. 0, việc gọi một phương thức tĩnh hoặc truy cập trực tiếp vào một thuộc tính tĩnh trên một đặc điểm không được dùng nữa. Các phương thức và thuộc tính tĩnh chỉ nên được truy cập trên một lớp bằng cách sử dụng đặc điểm

Ví dụ #9 Biến tĩnh

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
25

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
26

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
27

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
28

Ví dụ #10 Phương thức tĩnh

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
29

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
30

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
31

Ví dụ #11 Thuộc tính tĩnh

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
32

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
30

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
34

Tính chất

Các đặc điểm cũng có thể xác định các thuộc tính

Ví dụ #12 Xác định thuộc tính

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
35

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
36

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
37

Nếu một đặc điểm xác định một thuộc tính thì một lớp không thể định nghĩa một thuộc tính có cùng tên trừ khi nó tương thích (cùng khả năng hiển thị và loại, công cụ sửa đổi chỉ đọc và giá trị ban đầu), nếu không sẽ xảy ra lỗi nghiêm trọng

Ví dụ #13 Giải quyết xung đột

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
38

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
39

hằng số

Các đặc điểm có thể, kể từ PHP 8. 2. 0, cũng xác định hằng số

Ví dụ #14 Xác định hằng số

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
40

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
41

// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names
define("2TWO", "second thing");
42

Nếu một đặc điểm xác định một hằng số thì một lớp không thể định nghĩa một hằng số có cùng tên trừ khi nó tương thích (cùng khả năng hiển thị, giá trị ban đầu và tính hữu hạn), nếu không sẽ xảy ra lỗi nghiêm trọng