2010-02-10 27 views
6
class My_class 
{ 
    const STATUS_ERROR = 0; 
    const STATUS_OK = 1; 
    const DB_TABLE = TABLE_PREFIX . 'class_table'; 
}

Hai trạng thái const hoạt động tốt và có thể được truy cập trong các phương thức lớp như self::STATUS_ERRORself::STATUS_OK tốt.Làm thế nào tôi có thể nối một hằng số và một biến và lưu nó trong một hằng số lớp với PHP?

Sự cố là một trong những cách ngăn chặn lỗi sau được ném khi tôi cố xác định hằng số thứ ba.

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/sub/sub/directory/script.php

+0

Tôi cũng đã xem qua cùng một vấn đề. Vâng, trông như một hạn chế đối với tôi. Đề cập cũng ở đây: http://bugs.php.net/bug.php?id=42355 –

+1

Lỗi trên đã được chuyển thành RFC và điều này đã được chấp thuận để đưa vào v 5.6, nơi khả năng này hiện khả dụng: https://wiki.php.net/rfc/const_scalar_exprs. –

Trả lời

9

Bạn không. Hằng số là hằng số. Bạn không thể lưu trữ bất cứ thứ gì trong đó.

Mặc dù vậy, bạn có thể sử dụng thuộc tính tĩnh.

class My_Class { 
    public static $DB_TABLE; 
} 
My_Class::$DB_TABLE = TABLE_PREFIX . 'class_table'; 

Bạn không thể làm điều đó trong tuyên bố, vì vậy bạn có thể thích phương pháp tĩnh thay thế.

class My_Class { 
    public static function dbTable() { 
    return TABLE_PREFIX . 'class_table'; 
    } 
} 
Các vấn đề liên quan