Hướng dẫn php function names are case sensitive - tên hàm php phân biệt chữ hoa chữ thường

Tôi đến từ nền Java. Trong Java, mọi phương pháp đều có trường hợp nhạy cảm trong khi gọi. Nhưng trong PHP, tôi đã không thấy tên hàm nhạy cảm trường hợp trong khi gọi các chức năng.

class Sample {

    ...
    ...

    function sampleFunction() {

       ....
       ....

    }

}

$obj = new Sample();
$obj->sampleFunction(); /* Proper call with function name */
$obj->samplefunction(); /* It should show undefined function error but it also calls sampleFunction()  */

Bất cứ ai cũng có thể làm rõ nghi ngờ của tôi tại sao điều này còn được gọi là tên hàm không nhạy cảm không có trường hợp. Và xin vui lòng cho tôi làm thế nào để hạn chế trong PHP?

Cảm ơn trước.

Hướng dẫn php function names are case sensitive - tên hàm php phân biệt chữ hoa chữ thường

Ahmet Kakıcı

6.2444 Huy hiệu vàng37 Huy hiệu bạc48 Huy hiệu đồng4 gold badges37 silver badges48 bronze badges

Đã hỏi ngày 3 tháng 12 năm 2013 lúc 7:10Dec 3, 2013 at 7:10

3

Họ là trường hợp vô cảm, xem điều này:

Lưu ý: Tên chức năng không nhạy cảm với trường hợp, mặc dù nó thường là hình thức tốt để gọi các hàm khi chúng xuất hiện trong tuyên bố của chúng.

http://www.php.net/manual/en/functions.user-defined.php

Chất xơ

5.52412 Huy hiệu vàng34 Huy hiệu bạc62 Huy hiệu Đồng12 gold badges34 silver badges62 bronze badges

Đã trả lời ngày 3 tháng 12 năm 2013 lúc 7:14Dec 3, 2013 at 7:14

AnasanasAnas

5665 Huy hiệu bạc10 Huy hiệu Đồng5 silver badges10 bronze badges

3

Hướng dẫn php function names are case sensitive - tên hàm php phân biệt chữ hoa chữ thường
Ảnh từ Unplash

PHP là một ngôn ngữ lập trình độc đáo về độ nhạy của trường hợp.

Trong PHP, các biến và hằng số nhạy cảm trường hợp, trong khi các chức năng không nhạy cảm trường hợp.

Các lớp PHP là sự pha trộn giữa các biến và hàm, vì vậy chúng nhạy cảm với trường hợp một phần.partially case-sensitive.

Hãy cùng xem một số ví dụ thực tế dưới đây:

// 👇 you can create two variables like this:
$num = 99;
$NUM = 20;

echo $num; // 99
echo "\n".$NUM; // 20

// 👇 but you can't have two functions like this:
function greetings(){
    echo "Hello World!";
}

// 👇 Fatal error: Cannot redeclare GREETINGS()
function GREETINGS(){
    echo "Hello World!";
}

Như bạn có thể thấy trong ví dụ trên, các biến $num$NUM có thể có các giá trị khác nhau.

Nhưng khi bạn khai báo hai chức năng có cùng tên, PHP sẽ tạo ra một lỗi nghiêm trọng: không thể điều chỉnh lại chức năng. Điều này xảy ra mặc dù tên hàm sử dụng các trường hợp chữ cái khác nhau.

Tuy nhiên, PHP sẽ bỏ qua vỏ khi gọi một hàm:

function greetings(){
    echo "Hello World!";
}

// 👇 this works
GreeTingS();

Các hằng số hệ thống PHP như $GLOBALS,

// 👇 you can create two variables like this:
$num = 99;
$NUM = 20;

echo $num; // 99
echo "\n".$NUM; // 20

// 👇 but you can't have two functions like this:
function greetings(){
    echo "Hello World!";
}

// 👇 Fatal error: Cannot redeclare GREETINGS()
function GREETINGS(){
    echo "Hello World!";
}
0,
// 👇 you can create two variables like this:
$num = 99;
$NUM = 20;

echo $num; // 99
echo "\n".$NUM; // 20

// 👇 but you can't have two functions like this:
function greetings(){
    echo "Hello World!";
}

// 👇 Fatal error: Cannot redeclare GREETINGS()
function GREETINGS(){
    echo "Hello World!";
}
1,
// 👇 you can create two variables like this:
$num = 99;
$NUM = 20;

echo $num; // 99
echo "\n".$NUM; // 20

// 👇 but you can't have two functions like this:
function greetings(){
    echo "Hello World!";
}

// 👇 Fatal error: Cannot redeclare GREETINGS()
function GREETINGS(){
    echo "Hello World!";
}
2 là các biến, vì vậy chúng cũng nhạy cảm trường hợp:

<?php

$name = "Nathan";

// 👇 the $globals array are different than $GLOBALS
$globals["name"] = "Jack";

echo $GLOBALS["name"];      // Nathan
echo "\n".$globals["name"]; // Jack

Php

// 👇 you can create two variables like this:
$num = 99;
$NUM = 20;

echo $num; // 99
echo "\n".$NUM; // 20

// 👇 but you can't have two functions like this:
function greetings(){
    echo "Hello World!";
}

// 👇 Fatal error: Cannot redeclare GREETINGS()
function GREETINGS(){
    echo "Hello World!";
}
3 nhạy cảm một phần vì khai báo lớp không nhạy cảm với trường hợp:not case sensitive:

class Human {}

// 👇 Fatal error: Cannot declare class human
class human {}

Lớp học cũng không nhạy cảm với trường hợp:not case sensitive as well:

class Human {
  function greet(){
      echo "Hi!";
  }
}

// 👇 this instantiation works
$h = new HUMAN();
$h->greet();

Nhưng các thuộc tính lớp rất nhạy cảm, vì vậy bạn có thể tạo hai thuộc tính khác nhau có cùng tên, nhưng các trường hợp khác nhau:

class Human {
    public $name = "Nathan";
    public $NAME = "Jack";
}

$h = new HUMAN();
echo $h->name;      // Nathan
echo "\n".$h->NAME; // Jack

Vì vậy, đây là bản tóm tắt về độ nhạy của trường hợp PHP:

  • Biến là nhạy cảm trường hợp. Điều này bao gồm các biến hệ thống
  • Các chức năng không nhạy cảm với trường hợpnot case sensitive
  • Các lớp là sự kết hợp của các biến và hàm, vì vậy chúng rất nhạy cảm với trường hợppartially case sensitive
  • Tuyên bố lớp, khởi tạo và phương pháp không nhạy cảm với trường hợpnot case sensitive
  • Thuộc tính lớp rất nhạy cảm

Đây là các quy tắc cơ bản về độ nhạy của trường hợp trong PHP.

Nếu bạn đã nghiên cứu các ngôn ngữ lập trình khác trước đây, bạn có thể cảm thấy kỳ lạ về các phương tiện không nhạy cảm trường hợp của PHP trong các chức năng và các lớp. Điều này khác với các ngôn ngữ khác như JavaScript hoặc Python.

Về lý do tại sao nó như thế, tôi nghĩ rằng đó là một sai lầm thiết kế ngôn ngữ khi các chức năng được giới thiệu lần đầu tiên.

Trong các chức năng PHP/FI v2 được phát hành dưới dạng trường hợp không nhạy cảm1. Thay đổi hành vi này có thể phá vỡ nhiều ứng dụng chạy trên PHP.

Mặc dù vậy, đừng lo lắng quá nhiều về độ nhạy của trường hợp, nó đã giành được bất kỳ vấn đề nào nếu bạn tuân theo tiêu chuẩn mã hóa PHP.

Cảm ơn vì đã đọc! Tôi hy vọng hướng dẫn này đã hữu ích cho bạn 🙏


  1. Tên chức năng PHP/FI không nhạy cảm với trường hợp & nbsp; ↩︎

Là trường hợp chức năng

Trong các ngôn ngữ lập trình, một số ngôn ngữ lập trình khác có độ nhạy trường hợp khác nhau;Trong PHP, ví dụ, tên biến là nhạy cảm với trường hợp nhưng tên hàm không nhạy cảm trường hợp.function names are not case-sensitive.

Những phần của PHP là trường hợp

Trong PHP, tên biến và không đổi là trường hợp nhạy cảm, trong khi tên hàm thì không.variable and constant names are case sensitive, while function names are not.

Tên chức năng có phải là trường hợp không

Chúng không nhạy cảm với trường hợp, xem điều này: Lưu ý: Tên chức năng không nhạy cảm với trường hợp, mặc dù nó thường là hình thức tốt để gọi các chức năng khi chúng xuất hiện trong tuyên bố của chúng., see this: Note: Function names are case-insensitive, though it is usually good form to call functions as they appear in their declaration.

Php có yêu cầu trường hợp không

PHP là một ngôn ngữ lập trình độc đáo về độ nhạy của trường hợp.Trong PHP, các biến và hằng số nhạy cảm trường hợp, trong khi các chức năng không nhạy cảm trường hợp.Các lớp PHP là sự pha trộn giữa các biến và chức năng, vì vậy chúng nhạy cảm với trường hợp một phần.variables and constants are case sensitive, while functions are not case sensitive. PHP classes are a mix between variables and functions, so they are partially case-sensitive.