2011-09-15 43 views
5

là có một cách trong php
để khai báo một lớp sử dụng một biến
tức (doesnt làm việc này - nhưng nó ở đây để cung cấp cho bạn một ý tưởng về ý định của tôi):cách khai báo một lớp php với một tên biến

$myname = "the_class"; 
class $myname { 
... 
} 

tôi cũng đã cố gắng:

define("MYNAME","the_class"); 
class MYNAME{ 
... 
} 

và tôi đã cố gắng:

$myname = "the_class"; 
class $$myname { 
... 
} 
.210

doesnt này thực sự giúp:
http://php.net/manual/en/language.variables.scope.php

cũng không thực hiện điều này:
http://us3.php.net/manual/en/keyword.class.php

cảm ơn rất nhiều sự giúp đỡ của bạn

+12

Tại sao bạn muốn làm điều đó trên Earth? – NullUserException

+0

có lẽ nếu bạn đã cho chúng tôi biết bạn định làm gì với nó, chúng tôi có thể tìm ra cách tốt hơn để đạt được mục tiêu cuối cùng của bạn. Tôi không thể tưởng tượng một lý do tại sao điều này sẽ là cần thiết ... – Dan

+0

Tôi sẽ xuất hiện rằng bạn đang xác định $ myname như một String, Không phải là một lớp. Có thể một biến trỏ đến hai đối tượng? Điều này giống như một chức năng (toán học) 1x -> 2ys –

Trả lời

7

Chắc chắn, sử dụng php để viết vào một tập tin có tên mà bạn muốn , sau đó yêu cầu tệp đó. Bạn cũng có thể sử dụng eval, ví dụ: một cái gì đó như: eval("class $myname { ... };");

Đối với các trường hợp phức tạp hơn, hãy sử dụng thư viện như Zend's CodeGenerator (ví dụ here).

0

Vui lòng không gửi/hủy phản hồi này hoặc đánh dấu câu trả lời đó là câu trả lời.

Eugen Rieck's answer là tốt nhất, nhưng bị chôn vùi trong các nhận xét.

The answer he linked to cho biết cách sử dụng class_alias() để đặt tên lớp thành định nghĩa. Điều này rất hữu ích nếu bạn đang viết một lớp thư viện và muốn để cho người dùng đặt tên nó bất cứ điều gì họ muốn, ví dụ bằng cách thiết lập một định nghĩa trong một tập tin cấu hình. Vì vậy, nếu bạn đang viết một thư viện chứa MyLibraryClass, bạn có thể cho phép người dùng đặt tên cho nó giống như LC cho conciseness để họ có thể viết LC :: someFunction() hoặc LC-> someFunction thay vì phải viết toàn bộ điều ngoài.

Các vấn đề liên quan