haben Gibt es eine einfache Möglichkeit, ein Konzept der Teilklasse in PHP haben, wie wir in C# haben? Ich habe versucht, es mit anderen Namespaces möglich zu machen, aber es konnte nicht funktionieren.Teil Klasse in PHP, wie wir in C#
Antwort
Sie existieren nicht.
Wenn jedoch versucht man, einen Code-Generator für die Benutzer-Land-Code (wie in C# folgenden gleichen Anwendungsfall) zu implementieren angebracht werden könnte dann die folgenden ein gangbarer Weg sein kann:
class Generator
{
public function generate(Definition $definition)
{
if ($this->shouldGenerateTraitFor($definition)) {
$this->generateTraitFor($definition);
}
$this->generateClassFor($definition);
}
}
einige Implementierung wie die oben gegeben, könnte man dann:
(new Generator())->generate(new Definition([
'class' => 'GeneratedClass',
'trait' => 'GeneratedTrait',
]));
Und der resultierende Code ähneln:
class GeneratedClass
{
use GeneratedTrait;
}
trait GeneratedTrait
{
// @todo; add "partial" code
}
Was wichtig zu beachten, über Generator::shouldGenerateTraitFor
ist, dass, wenn es false
zurückkehrt, wird das Merkmal nicht regeneriert werden. Dies kann davon abhängig sein, ob GeneratedTrait.php
existiert, und ist notwendig, um sicherzustellen, dass der handgeschriebene Merkmalscode bei der Neugenerierung der Klasse nicht verfälscht wird.
jedoch, könnte es † viel zu Ihrem Vorteil object composition über diesen Ansatz zu berücksichtigen.
† Es gibt Zeiten, in denen ich das Gefühl, dass der generierte Code Ansatz sauberer sein können, wie zum Beispiel mit „Einheit“ Typen, aber das ist von Fall zu Fall.
PHP verwendet Traits dafür:
http://php.net/manual/en/language.oop5.traits.php
Sie ermöglichen es, Klasse Teile von isolierten Dateien in verschiedene Klassen
- 1. Mix und Match-Klasse in C++/MFC (Teil 2)
- 2. Teil URL in PHP Get
- 3. Warum müssen wir eine Klasse in c plus plus exportieren?
- 4. Warum müssen wir in Objective-C [MyClass-Klasse] machen?
- 5. Wie verschlüsseln wir mysql Sonderzeichen in PhP?
- 6. In PHP können wir Session irgendwo in PHP-Projekt verwenden?
- 7. Wie diese in PHP meine Klasse debuggen
- 8. Wie kompilieren wir Kernel-Code in C?
- 9. Wie alle Teil einer Zeichenfolge in PHP finden
- 10. Extrahieren Zeichenfolge Teil in C#
- 11. Extrahieren von Teil in C
- 12. Änderungen & & in PHP-Klasse
- 13. Brauchen wir Fixpunktkombinatoren in C#?
- 14. abstrakte Klasse in PHP
- 15. C++ - Klasse in C++ DLL in C# Windows Forms Klasse
- 16. Wie können wir Informationen zur Datenträgerleistung in C#
- 17. Wie warten wir auf C# asynchrone Delegatenfunktion in C++/CX?
- 18. Können wir Desktop-Anwendung in PHP erstellen
- 19. in PHP ersetzen speziellen Zeichenfolge Teil
- 20. URL - Get letzten Teil in PHP
- 21. Statische Variablen in PHP Klasse
- 22. Klasse in einer Struktur in C++
- 23. Verweis auf die ID einer Ansicht in der Klasse (wie wir R.id.name in der Klasse)
- 24. Klasse innerhalb einer anderen Klasse in C#
- 25. Können wir Core-PHP in Codeigniter verwenden?
- 26. Warum sollten wir Sitzung in PHP zerstören?
- 27. C'tor in C++ Klasse
- 28. , wie man Schleife einen Teil einer Spalte in PHP-Datenbank
- 29. Wie Teil der URL-Zeichenfolge in PHP fangen
- 30. Themen in C++ Klasse
Warum es wollen würden Sie enthalten? ... Das ist übrigens eine ehrliche Frage. –
Könnten Sie nach [Eigenschaften] (http://lv1.php.net/traits) suchen? –
Partielle Klassen werden häufiger verwendet, wenn Teile der Klasse automatisch generiert werden (z. B. von einem Formulardesigner oder einem ORM-System), aber was ist Ihr Anwendungsfall hier? –