Biến php có thể không được xác định

Nếu không có bất kỳ kiến ​​thức đặc biệt nào, chúng ta có thể nghĩ rằng biến $foo có thể không được xác định trong trường hợp nhánh else được thực thi. Tuy nhiên, một số cuộc gọi phương thức cụ thể cũng có thể được các nhà phát triển dự án coi là kết thúc sớm - như một redirect() dừng thực thi bằng cách đưa ra một ngoại lệ nội bộ

Các phương thức này có thể được cấu hình bằng cách chỉ định một lớp mà chúng được gọi bằng cách sử dụng khóa tùy chọn earlyTerminatingMethodCalls trong tệp cấu hình như thế này

parameters:
earlyTerminatingMethodCalls:
Nette\Application\UI\Presenter:
- redirect
- redirectUrl
- sendJson
- sendResponse

Điều tương tự cũng áp dụng cho các chức năng toàn cầu đơn giản. Các chức năng kết thúc sớm có thể được xác định bằng cách sử dụng khóa earlyTerminatingFunctionCalls, giống như chức năng này với chức năng trợ giúp toàn cầu redirect()

parameters:
earlyTerminatingFunctionCalls:
- redirect

Có thể sử dụng thẻ PHPDoc @return never phía trên một hàm hoặc một phương thức thay vì cấu hình earlyTerminatingFunctionCalls hoặc earlyTerminatingMethodCalls


Một vấn đề khác mà bạn có thể gặp phải là PHPStan không hiểu các biến được xác định theo điều kiện như thế này

May mắn thay, điều này đã được PHPStan hiểu kể từ phiên bản 0. 12. 64. Vì vậy, nếu bạn vẫn gặp sự cố này, hãy đảm bảo nâng cấp lên phiên bản mới nhất

Hàm isset() kiểm tra xem một biến có được đặt hay không, nghĩa là nó phải được khai báo và không phải là NULL

Hàm này trả về true nếu biến tồn tại và không phải là NULL, ngược lại trả về false

Ghi chú. Nếu nhiều biến được cung cấp, thì hàm này sẽ chỉ trả về true nếu tất cả các biến được đặt

parameters:
earlyTerminatingFunctionCalls:
- redirect
1

parameters:
earlyTerminatingFunctionCalls:
- redirect
2

parameters:
earlyTerminatingFunctionCalls:
- redirect
3

parameters:
earlyTerminatingFunctionCalls:
- redirect
4

Các biến trong PHP được biểu thị bằng ký hiệu đô la theo sau là tên của biến. Tên biến phân biệt chữ hoa chữ thường

Tên biến tuân theo các quy tắc giống như các nhãn khác trong PHP. Tên biến hợp lệ 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ào. Là một biểu thức chính quy, nó sẽ được thể hiện như vậy.

parameters:
earlyTerminatingFunctionCalls:
- redirect
5

Ghi chú. Đối với mục đích của chúng tôi ở đây, một chữ cái là a-z, A-Z và các byte từ 128 đến 255 (

parameters:
earlyTerminatingFunctionCalls:
- redirect
6)

Ghi chú.

parameters:
earlyTerminatingFunctionCalls:
- redirect
7 là biến đặc biệt không thể gán. Trước PHP 7. 1. 0, gán gián tiếp (e. g. bằng cách sử dụng biến biến) là có thể

Để biết thông tin về các hàm liên quan đến biến, hãy xem Tham khảo hàm biến

parameters:
earlyTerminatingFunctionCalls:
- redirect
8

parameters:
earlyTerminatingFunctionCalls:
- redirect
9

Theo mặc định, các biến luôn được gán theo giá trị. Điều đó có nghĩa là, khi bạn gán một biểu thức cho một biến, toàn bộ giá trị của biểu thức ban đầu được sao chép vào biến đích. Ví dụ, điều này có nghĩa là sau khi gán giá trị của một biến cho một biến khác, việc thay đổi một trong các biến đó sẽ không ảnh hưởng đến biến kia. Để biết thêm thông tin về loại bài tập này, hãy xem chương về Biểu thức

PHP cũng cung cấp một cách khác để gán giá trị cho các biến. chỉ định bằng cách tham khảo. Điều này có nghĩa là biến mới chỉ đơn giản là tham chiếu (nói cách khác, "trở thành bí danh cho" hoặc "trỏ tới") biến ban đầu. Các thay đổi đối với biến mới ảnh hưởng đến biến ban đầu và ngược lại

Để gán theo tham chiếu, chỉ cần thêm dấu và (&) vào đầu biến đang được gán (biến nguồn). Chẳng hạn, đoạn mã sau xuất ra '$foo0' hai lần

$foo1

Một điều quan trọng cần lưu ý là chỉ các biến được đặt tên mới có thể được chỉ định theo tham chiếu

$foo2

$foo3

$foo4

Không cần thiết phải khởi tạo các biến trong PHP tuy nhiên đó là một cách thực hành rất tốt. Các biến chưa được khởi tạo có giá trị mặc định thuộc loại của chúng tùy thuộc vào ngữ cảnh mà chúng được sử dụng - boolean mặc định là

parameters:
earlyTerminatingFunctionCalls:
- redirect
60, số nguyên và số thực mặc định là 0, chuỗi (e. g. được sử dụng trong tiếng vang) được đặt thành một chuỗi trống và các mảng trở thành một mảng trống

Ví dụ #1 Giá trị mặc định của các biến chưa được khởi tạo

parameters:
earlyTerminatingFunctionCalls:
- redirect
61

parameters:
earlyTerminatingFunctionCalls:
- redirect
62

parameters:
earlyTerminatingFunctionCalls:
- redirect
63

parameters:
earlyTerminatingFunctionCalls:
- redirect
64

parameters:
earlyTerminatingFunctionCalls:
- redirect
65

parameters:
earlyTerminatingFunctionCalls:
- redirect
66

parameters:
earlyTerminatingFunctionCalls:
- redirect
67

Việc dựa vào giá trị mặc định của một biến chưa được khởi tạo là một vấn đề trong trường hợp gộp một tệp này vào một tệp khác sử dụng cùng một tên biến.

parameters:
earlyTerminatingFunctionCalls:
- redirect
68 (trước PHP 8. 0. 0,
parameters:
earlyTerminatingFunctionCalls:
- redirect
69) được phát sinh trong trường hợp làm việc với các biến chưa được khởi tạo, tuy nhiên không phải trong trường hợp nối thêm các phần tử vào mảng chưa được khởi tạo. cấu trúc ngôn ngữ isset() có thể được sử dụng để phát hiện xem một biến đã được khởi tạo chưa

Làm cách nào để sửa một biến không xác định trong PHP?

Thông báo sửa chữa. Biến không xác định bằng cách sử dụng hàm isset() . Các giải pháp. Để khắc phục loại lỗi này, bạn có thể xác định biến là toàn cục và sử dụng hàm isset() để kiểm tra xem biến đó có được đặt hay không .

Làm cách nào để kiểm tra xem một biến có được xác định hay không trong PHP?

Hàm isset() kiểm tra xem một biến có được đặt hay không, nghĩa là biến đó phải được khai báo và không phải là NULL. Hàm này trả về true nếu biến tồn tại và không phải là NULL, ngược lại trả về false.

Làm cách nào bạn có thể xác định chính xác một biến trong PHP?

Quy tắc cho các biến PHP. .
Một biến bắt đầu bằng dấu $, theo sau là tên của biến
Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới
Tên biến không được bắt đầu bằng số
Tên biến chỉ có thể chứa các ký tự chữ và số và dấu gạch dưới (A-z, 0-9 và _ )

Làm cách nào để tạo một biến toàn cục trong PHP?

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. cú pháp. $variable_name = data; Chương trình dưới đây minh họa cách khai báo biến toàn cục.