Ist es möglich, Objekt in eine Datenbank einzufügen? (In PHP-Interview gefragt.)Ist es möglich, Objekt in eine Datenbank einzufügen?
Antwort
Ja, es ist möglich, mit .
Aber die Antwort enorm hängt vom Kontext ab.
Ja er mich nächste Frage in Bezug auf die Serialisierung gefragt, was ich viel den Ball hielt wusste ... –
dank Pekka für mich zu korrigieren. –
Wenn Sie über PHP-Objekt sprechen, ist es nicht möglich, ein Objekt in die Datenbank einzufügen. Um es in der Datenbank zu speichern, müssen Sie es zunächst serialisieren und es zum Zeitpunkt der Verwendung wieder serialisieren.
dank Kamerad für die Detaillierung –
Diese Frage ist extrem vage und undefiniert. Ich meine, auf der einen Seite können Sie ein Objekt serialisieren und in die Datenbank einfügen. Das "Einfügen eines Objekts" hängt jedoch vom Kontext ab. Zum Beispiel bezieht er auf die Tatsache, dass Sie eine SQL-Anweisung aufrufen können:
$a = new object();
// This makes no sense.
$sql = "Insert into table_name values($a);";
Wenn das ist, was er fragt, dann ist die Antwort nein, können Sie das nicht tun, wenn Sie die __toString()
Methode überschreiben welche die Werte zurückgibt, die in die Datenbank eingefügt werden sollen. Selbst dann ist die Klasse nicht gut definiert, weil Sie sagen, dass __toString() ein Datenbankwert sein wird, aber dies ist nicht klar definiert oder angedeutet, ohne auf das Klassenobjekt selbst zu verweisen.
In jedem Fall jedoch, wenn ein Objekt Datenbanktabellen usw. darstellt, möchten Sie die einzelnen Elemente je nach Verantwortlichkeiten trennen. Zum Beispiel können Sie Objekt A haben, das die Datenbanktabelle definiert, und dann ein "Manager" -Objekt B haben, das das Element aus der Datenbank einfügt, aktualisiert, löscht und auswählt. Zum Beispiel:
// NOT REAL PHP CODE....
class Table_Name
{
// Define primary keys, foreign keys, and attributes of the table.
private $column1;
public function setColumn1($value);
public function getCOlumn1();
}
class Table_Name_Manager
{
public function insert(Table_Name $obj);
public function delete(Table_Name $obj);
public function select(Table_Name $obj);
}
Das oben genannte macht für mich den meisten Sinn, weil es klar definiert die Verhaltensweisen, die Sie erwarten würden. Sie können einfach einen Manager verwenden, um Elemente aus der Datenbank zu entfernen und das Objekt zu ändern. Anschließend können Sie den Manager erneut aufrufen und einfügen, aktualisieren oder löschen.
Canon gegen –
Kurze Antwort: Nein, es ist nicht möglich
Lange Antwort: Sie können nicht Objekt direkt einfügen, haben Sie es serialisiert wird vor dem Speichern, zum Beispiel mit Hilfe der integrierten in serialize()
Funktion oder einem benutzerdefinierten XML-Serializer. Dann können Sie es in einige TEXT
oder BLOB
Spalte setzen.
Richtige Antwort: Verwenden Sie ein ORM-Tool (Object-Relational Mapping), um Objekte in die Datenbank zu stellen. Die meisten MVC-Frameworks verfügen über ein eingebautes ORM, das am häufigsten Active Record-Muster verwendet.
Sie können auch ein kluger Esel sein:
Sie: „Du könntest nehmen Sie das PHP-Objekt aus dem Speicher und Portierung auf Java oder .NET und dann verwenden, um eine Versant Objektdatenbank das Objekt zu speichern . "
Ja, Sie können, müssen Sie nur in ein passendes Format zu serialisieren. Der springende Punkt einer offenen Frage wie dieser ist es, einen Weg zu finden, was gefragt wird.
+1, ich denke, es ist eine ziemlich gute Interviewfrage tatsächlich. –
Das ist absolut korrekt @ Mhughes, als sie ihre Zweifel nicht klären –
Niemand schlug OR-Mapper vor? interessant ...
Wenn Sie Ihre Datenbanktabellen so erstellen, dass sie Objekte darstellen, können Sie mit einem objektrelationalen Mapper die Werte Ihrer Objektmitglieder in der Datenbank speichern.
für PHP gibt es propel und viele andere
+1 für ORM. Normalerweise verwende ich Doctrine dafür. – selfawaresoup
+1 sieht interessant aus – dmp
Es sollte beachtet werden, dass serialisierte Objekte in relationalen Datenbanken speichern praktisch alle Regeln Normalisierung Datenbank widerspricht und kann sehr schlechte Praxis in Betracht gezogen werden.
Um Objekte in einer Datenbank zu speichern, sollten Sie objektbezogene Mapper wie Doctrine oder Propel verwenden.
Serialisierte Objekte können jedoch in Ihrem Dateisystem gespeichert werden. Das ist ok.
- 1. Ist es möglich, Daten in eine MySQL-Ansicht einzufügen?
- 2. Ist es möglich, php time() -Wert standardmäßig in eine Spalte einer MYSQL-Datenbank einzufügen?
- 3. SQL Server: Ist es möglich, in zwei Tabellen gleichzeitig einzufügen?
- 4. Ist es möglich, NSObjectController in die Responder-Kette einzufügen?
- 5. Ist es möglich, das Ergebnis in MySQL auszuwählen und einzufügen?
- 6. Ist es in HTML möglich, einen Wortumbruchhinweis einzufügen?
- 7. Ist es möglich, einen Suchbefehl in ein Makro einzufügen?
- 8. Es ist möglich, for-Schleife in ftp-Skript einzufügen?
- 9. Ist es möglich, HTML-Inhalt in ein XML-Dokument einzufügen?
- 10. Wie ist es möglich, ein Refektionsfeld in ein anderes Objekt einzufügen?
- 11. Ist es möglich, Werte in eine Form durch die Ansicht übergeben wird einzufügen
- 12. Ist es möglich, eine Reihe an einer beliebigen Position in einem Datenrahmen mit Pandas einzufügen?
- 13. Ist es möglich, Daten mit SqlCommand zu aktualisieren/einzufügen?
- 14. Ist es möglich, ein Bild/eine Variable mithilfe von JS in eine E-Mail einzufügen?
- 15. Ist es möglich, ein neues Zeilenzeichen in eine Echozeile in einer Stapeldatei einzufügen?
- 16. Ist es möglich, eine neue Zeile mit View mit Linq to Entities einzufügen?
- 17. Ist es möglich, Daten von Mysql-Datenbank
- 18. Ist es möglich, eine Datenbank im RAM zu laden?
- 19. Ist es möglich, mit Autofac eine Liste von aufgelösten Objekten in einen Konstruktor einzufügen?
- 20. Ist es möglich, eine große Datenbank mit mysql Abfrage herunterladen
- 21. Ist es möglich, dass mysql eine verteilte Datenbank erstellt?
- 22. Ist es möglich, eine OpenShift-Datenbank mit pgAdmin zu verwalten?
- 23. Sicher, Datum direkt in MySQL-Datenbank einzufügen?
- 24. Fehler beim Versuch, eine neue Variable in eine Datenbank einzufügen
- 25. Ist es möglich, eine Zeile einzufügen, aber nur wenn ein Wert noch nicht existiert?
- 26. Wie ist es möglich, Daten im asynchronen Modus mit FMDB in swift einzufügen?
- 27. Gibt es eine Möglichkeit, eine "Zelle" in MigLayout einzufügen?
- 28. Ist es möglich, Javascript in einer Datenbank zu speichern?
- 29. Ist es möglich, JButton in eine JTable einzubinden?
- 30. Ist es möglich, ein Objekt in C# aufzurufen?
Ist das die vollständige Frage des Interviewers? Ich hätte die Frage als "keine echte Frage - zu vage" geschlossen :) –
Ja, das ist, was er mir fragte :(Ich bat ihn, Details zu geben, (In Gedanken sagte ich, ich muss dies in stackoverflow fragen, und Potter (Pekka) würde um weitere Informationen zu fragen) –