Nếu bạn đang sử dụng PHP> = 5.3, bạn có thể sử dụng HEREDOC syntax để khai báo chuỗi của bạn:
class MyClass {
public $str = <<<STR
this is
a long
string
STR;
}
$a = new MyClass();
var_dump($a->str);
Nhưng điều này:
- chỉ có thể với PHP> = 5.3
- và chuỗi không được chứa bất kỳ biến nào
- điều này là do giá trị của chuỗi phải được biết tại thời gian biên dịch
- , btw, giải thích tại sao ghép nối với
.
, sẽ không hoạt động: giá trị được thực hiện tại thời điểm thực thi.
Và nhược điểm khác là điều này sẽ đưa dòng mới trong chuỗi - mà có thể, hay không, là một điều xấu.
Nếu bạn đang sử dụng PHP < = 5.2:
Bạn không thể làm điều đó; một giải pháp có thể để khởi tạo chuỗi trong lớp học của bạn constructor:
class MyClass {
public $str;
public function __construct() {
$this->str = <<<STR
this is
a long
string
STR;
}
}
(cùng không phải với dòng mới)
Hoặc, ở đây, bạn có thể làm chuỗi concatenations:
class MyClass {
public $str;
public function __construct() {
$this->str = 'this is' .
'a long' .
'string';
}
}
(theo cách này, không có dòng mới)
khác, bạn có thể có một chuỗi được bao quanh bởi một trong hai đơn hay ngoặc kép, và đặt nó trên một vài dòng:
class MyClass {
public $str = "this is
a long
string";
}
(Ở đây, một lần nữa, bạn sẽ có dòng mới trong chuỗi kết quả)
Nguồn
2010-04-09 04:48:40
Tôi không thấy bất kỳ lý do nào khiến những điều trên không hiệu quả. Bạn có thể đăng chính xác mã của mình không. Cảm ơn. –
Bạn chắc chắn có thể mở rộng trên nhiều dòng, bạn có thể đăng mã và chính xác cách nó không hoạt động không? –
Bạn có thể truy cập các biến bên ngoài lớp bằng cách sử dụng từ khóa 'global' hoặc' super GLloAL' superglobal array, nhân tiện. Tôi không khuyên bạn nên điều này, tất nhiên. – Zarel