Czy w PHP można utworzyć instancję obiektu z nazwy klasy, jeśli nazwa klasy jest zapisana w łańcuchu?Czy PHP może utworzyć instancję obiektu z nazwy klasy jako ciąg?
Odpowiedz
Tak, zdecydowanie.
$className = 'MyClass';
$object = new $className;
<?php
$type = 'cc';
$obj = new $type; // outputs "hi!"
class cc {
function __construct() {
echo 'hi!';
}
}
?>
Static też:
$class = 'foo';
return $class::getId();
Nie zapewnia to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. - [Z recenzji] (/ opinia/niskiej jakości-posts/16691553) – Blackbam
@Blackbam powiązana odpowiednia odpowiedź uzupełniająca. Prosimy tylko o komentarz, jeśli jest przydatny. –
Prawda jest taka, że właściwie tak czy inaczej, wyjaśnienie twojej odpowiedzi byłoby miłe. Pytanie brzmiało "czy PHP może utworzyć instancję obiektu", ale dostęp do statycznej funkcji członka nie jest dostępem do obiektu. – Blackbam
Można zrobić jakąś dynamiczną wywołania przez przechowywania classname (y)/metod w pamięci takich jak baza danych . Zakładając, że klasa jest odporna na błędy.
sample table my_table
classNameCol | methodNameCol | dynamic_sql
class1 | method1 | 'select * tablex where .... '
class1 | method2 | 'select * complex_query where .... '
class2 | method1 | empty use default implementation
etc .. Następnie w kodzie przy użyciu strun zwróconej przez bazę danych dla klas i metod nazwisk. możesz nawet przechowywać kwerendy sql dla swoich klas, poziom automatyzacji, jeśli do wyobraźni.
$myRecordSet = $wpdb->get_results('select * from my my_table')
if ($myRecordSet) {
foreach ($myRecordSet as $currentRecord) {
$obj = new $currentRecord->classNameCol;
$obj->sql_txt = $currentRecord->dynamic_sql;
$obj->{currentRecord->methodNameCol}();
}
}
Używam tej metody do tworzenia usług internetowych REST.
- 1. php utworzyć obiektu bez klasy
- 2. Pobierz instancję klasy według nazwy klasy string
- 3. Jak utworzyć instancję klasy z jej TRttiType?
- 4. Jak utworzyć nową instancję z nazwą klasy w GWT
- 5. Wyrażenie, aby utworzyć instancję z inicjatorem obiektu
- 6. Czy mogę utworzyć instancję klasy za pomocą obiektu klasy? A co z konstruktorami?
- 7. Jak utworzyć instancję klasy z ciągu znaków w Railsach?
- 8. Jak AutoMapper utworzyć instancję klasy
- 9. Jak utworzyć nową instancję klonu obiektu PSObject
- 10. Jak utworzyć instancję strumienia, jeśli zadeklarujesz ją jako członka klasy?
- 11. Tworzenie obiektu dynamicznie, gdy nazwa klasy jest podana jako ciąg
- 12. Jak utworzyć instancję obiektu z RTTI w Delphi 2010?
- 13. Jak utworzyć instancję obiektu DataContext w XAML
- 14. Czy można utworzyć instancję klasy bez uruchamiania ŻADNEGO kodu z klasy? (brak inicjalizacji, brak inicjalizacji pól)
- 15. Jak ustawić/utworzyć instancję klasy Generics?
- 16. Czy klasa Pythona może zwrócić nową instancję klasy?
- 17. Dlaczego tworzymy instancję obiektu z interfejsu zamiast z klasy?
- 18. Jak znaleźć instancję metamocytu Qt na podstawie nazwy klasy?
- 19. obiektu klasy stdClass nie może być zamieniony na ciąg - laravel
- 20. Jak "wywołać" instancję klasy w PHP?
- 21. Uzyskiwanie nazwy obiektu z obiektu klasy podklasy NSMangedObject
- 22. Czy w PHP można utworzyć instancję obiektu i wywołać metodę w tej samej linii?
- 23. C# Reflection: Utwórz instancję obiektu o nazwie klasy String
- 24. jak utworzyć instancję klasy z ciągu znaków w swift 3
- 25. Jak utworzyć instancję klasy wewnętrznej z odbiciem w Javie?
- 26. Jak utworzyć instancję obiektu JAXBElement <String>?
- 27. Tworzenie instancji klasy PHP z ciągiem
- 28. przekonwertować ciąg JSON obiektu php
- 29. PHP Wyodrębnianie tablicę z klasy jako wartość
- 30. Import na instancję klasy
Fajnie, powinienem był przetestować to przed pytaniem hehe. Dzięki! – user135295
@user - zbyt prawo. Zastanawiam się, dlaczego trafiłem do SO bezpośrednio, zamiast robić absolutne minimum? lol – Ben
W rzeczywistości nie jest tak oczywiste. Wiem, że w Javie jest to coś, co nazywa się odbiciem, ale w porównaniu z tym jest to bardzo proste. –