Hướng dẫn php check class constant exists - tồn tại hằng số lớp kiểm tra php

Làm thế nào tôi có thể kiểm tra xem một hằng số có được xác định trong lớp PHP không?

class Foo {
    const BAR = 1;
}

Có một cái gì đó như ____10 hoặc

1 cho các hằng số lớp? Hoặc tôi có thể chỉ sử dụng
2?

Đã hỏi ngày 11 tháng 6 năm 2014 lúc 9:22Jun 11, 2014 at 9:22

Hướng dẫn php check class constant exists - tồn tại hằng số lớp kiểm tra php

Martin Majermartin MajerMartin Majer

3.1944 Huy hiệu vàng22 Huy hiệu bạc34 Huy hiệu đồng4 gold badges22 silver badges34 bronze badges

1

Bạn có thể kiểm tra xem hằng số có được xác định với mã bên dưới không:

Đã trả lời ngày 11 tháng 6 năm 2014 lúc 9:24Jun 11, 2014 at 9:24

4

Bạn có 3 cách để làm điều đó:

defined()

[PHP> = 4 - Cách tương thích retro nhất]

$class_name = get_class($object); // remember to provide a fully-qualified class name
$constant = "$class_name::CONSTANT_NAME";
$constant_value = defined($constant) ? $constant : null;

Lưu ý: Sử dụng

3 trên hằng số riêng (có thể từ PHP7.1) sẽ gây ra lỗi: "Không thể truy cập const riêng". Trong khi sử dụng
4 hoặc
5 sẽ hoạt động.
: using
3 on a private constant (possible from PHP7.1) will throw error: "Cannot access private const". While using
4 or
5 will work.

Lớp phản ánh

[PHP> = 5]

$class_reflex = new \ReflectionClass($object);
$class_constants = $class_reflex->getConstants();
if (array_key_exists('CONSTANT_NAME', $class_constants)) {
    $constant_value = $class_constants['CONSTANT_NAME'];
} else {
    $constant_value = null;
}

ReflectionClassConstant

[PHP> = 7.1.0]

$class_name = get_class($object); // fully-qualified class name
try {
    $constant_reflex = new \ReflectionClassConstant($class_name, 'CONSTANT_NAME');
    $constant_value = $constant_reflex->getValue();
} catch (\ReflectionException $e) {
    $constant_value = null;
}

Không có cách thực sự tốt hơn. Phụ thuộc vào nhu cầu của bạn và trường hợp sử dụng.

Đã trả lời ngày 5 tháng 6 năm 2018 lúc 10:23Jun 5, 2018 at 10:23

Hướng dẫn php check class constant exists - tồn tại hằng số lớp kiểm tra php

KamafeatherkamafeatherKamafeather

7.58513 Huy hiệu vàng56 Huy hiệu bạc89 Huy hiệu Đồng13 gold badges56 silver badges89 bronze badges

1

Bạn có thể sử dụng chức năng đó:

function constant_exists($class, $name){
    if(is_string($class)){
        return defined("$class::$name");
    } else if(is_object($class)){
        return defined(get_class($class)."::$name");
    }
    return false;
}

Hoặc phiên bản thay thế bằng cách sử dụng lớp phản xạ

function constant_exists($class, $name) {
    if(is_object($class) || is_string($class)){
        $reflect = new ReflectionClass($class);
        return array_key_exists($name, $reflect->getConstants());
    }
    return false;
}

Đã trả lời ngày 8 tháng 2 năm 2018 lúc 20:27Feb 8, 2018 at 20:27

quant2016quant2016quant2016

4324 Huy hiệu bạc13 Huy hiệu đồng4 silver badges13 bronze badges

1

Vì vậy, tôi đã thử điều này:

$constants = new \ReflectionClass(App\Namespace\ClassName::class);
if ($constants->getConstant('CONSTANT_NAME')){
    // Do this
} else {
    // Do that
}

Và nó hoạt động tốt.

Đã trả lời ngày 27 tháng 10 năm 2021 lúc 6:58Oct 27, 2021 at 6:58

PAMEKARPAMEKARpamekar

6317 Huy hiệu bạc9 Huy hiệu Đồng7 silver badges9 bronze badges

Lớp tồn tại

if (! class_exists('\\class1', false)) require_once ("classes.php");

Chức năng tồn tại

if (! function_exists('TestFunction1')) require_once ("functions.php");

Đã trả lời ngày 16 tháng 6 lúc 8:55Jun 16 at 8:55

yW0K5oyW0K5oyW0K5o

8841 Huy hiệu vàng16 Huy hiệu bạc31 Huy hiệu đồng1 gold badge16 silver badges31 bronze badges

Làm thế nào để bạn kiểm tra hằng số tồn tại trong PHP?

Kiểm tra xem hằng số PHP có thể đạt được điều này có thể đạt được bằng cách sử dụng hàm PHP được xác định () không. Hàm được xác định () lấy tên của hằng số để được kiểm tra dưới dạng đối số và trả về giá trị đúng hay sai để cho biết liệu hằng số đó có tồn tại hay không.using the PHP defined() function. The defined() function takes the name of the constant to be checked as an argument and returns a value of true or false to indicate whether that constant exists.

Làm thế nào để bạn kiểm tra một hằng số?

Để kiểm tra xem hằng số có được xác định sử dụng hàm được xác định không.Lưu ý rằng chức năng này không quan tâm đến giá trị của không đổi, nó chỉ quan tâm nếu không đổi tồn tại hay không.Ngay cả khi giá trị của hằng số là null hoặc false, hàm vẫn sẽ trả về true.use the defined function. Note that this function doesn't care about constant's value, it only cares if the constant exists or not. Even if the value of the constant is null or false the function will still return true .

Làm thế nào để bạn gọi một lớp hằng số trong PHP?

Một hằng số lớp được khai báo bên trong một lớp với từ khóa Const.Hằng số lớp là nhạy cảm trường hợp.Tuy nhiên, nên đặt tên cho các hằng số trong tất cả các chữ cái chữ hoa.. Class constants are case-sensitive. However, it is recommended to name the constants in all uppercase letters.

Làm gì :: Lớp làm trong PHP?

:: Lớp ¶ Từ khóa lớp cũng được sử dụng để giải quyết tên lớp.Để có được tên đủ điều kiện của một lớp lớp sử dụng ClassName :: Class.Điều này đặc biệt hữu ích với các lớp theo tên.class name resolution. To obtain the fully qualified name of a class ClassName use ClassName::class . This is particularly useful with namespaced classes.