Entity-Header sind HTTP-Header, die Informationen über den Hauptteil (Body) einer Nachricht enthalten. Sie können sowohl in Anfragen als auch in Antworten vorkommen und beschreiben Eigenschaften des Inhalts, wie Typ, Länge, Kodierung oder letzte Änderung.
1.
Content-Type
Content-Type: application/json; charset=UTF-8
2.
Content-Length
Content-Length: 1024
3.
Content-Encoding
Content-Encoding: gzip
4. Content-Language
Content-Language: de-DE
5. Cache-Location
Content-Location: /files/document.pdf
6. Last-Modified
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT
7. ETag
ETag: "abc123xyz"
8. Expires
Expires: Fri, 02 Feb 2025 12:00:00 GMT
9. Allow
Allow: GET, POST, HEAD
10. Refresh
(Nicht standardisiert, aber oft verwendet)
Refresh: 10; url=https://example.com
Diese Header helfen dabei, den Inhalt einer HTTP-Nachricht genau zu beschreiben, Caching-Strategien zu optimieren und die korrekte Darstellung sicherzustellen.
Object Query Language (OQL) ist eine Abfragesprache, die ähnlich wie SQL (Structured Query Language) funktioniert, aber speziell für objektorientierte Datenbanken entwickelt wurde. Sie wird verwendet, um Daten aus objektorientierten Datenbanksystemen (OODBs) abzufragen, die Daten als Objekte speichern. OQL wurde als Teil des Object Data Management Group (ODMG)-Standards definiert.
Objektorientierte Ausrichtung:
Ähnlichkeit mit SQL:
Abfragen von komplexen Objekten:
Unterstützung für Methoden:
Kompatibilität mit objektorientierten Programmiersprachen:
Angenommen, es gibt eine Datenbank mit einer Klasse Person
mit den Attributen Name
und Age
. Eine OQL-Abfrage könnte wie folgt aussehen:
SELECT p.Name
FROM Person p
WHERE p.Age > 30
Diese Abfrage gibt die Namen aller Personen zurück, deren Alter größer als 30 ist.
In der Praxis ist OQL weniger populär als SQL, da relationale Datenbanken nach wie vor weit verbreitet sind. Allerdings ist OQL in spezialisierten Anwendungen, die objektorientierte Datenmodelle nutzen, sehr leistungsfähig.
Das Document Object Model (DOM) ist eine standardisierte Schnittstelle, die von Webbrowsern bereitgestellt wird, um strukturierte Dokumente – insbesondere HTML- und XML-Dokumente – darzustellen und programmatisch zu manipulieren. Es beschreibt die hierarchische Struktur eines Dokuments als Baum, wobei jeder Knoten ein Element, Attribut oder einen Text darstellt.
Baumstruktur:
<html>
-Element, mit untergeordneten Knoten wie <head>
, <body>
, <div>
, <p>
usw.Objektorientierte Darstellung:
Interaktivität:
<p>
-Elements ändern oder ein <div>
-Element einfügen.Plattform- und Programmiersprachenunabhängig:
1. Zugriff auf ein Element:
let element = document.getElementById("meinElement");
2. Ändern des Inhalts:
element.textContent = "Neuer Text";
3. Hinzufügen eines neuen Elements:
let neuerKnoten = document.createElement("div");
document.body.appendChild(neuerKnoten);
Das DOM wird durch Standards des W3C (World Wide Web Consortium) definiert und ständig weiterentwickelt, um moderne Webtechnologien zu unterstützen.
PSR-12 ist ein Standard der PHP-Fig (PHP Framework Interoperability Group), der Coding-Style-Guidelines für PHP definiert. Es baut auf PSR-1 (Basic Coding Standard) und PSR-2 (Coding Style Guide) auf und erweitert diese, um modernere Anforderungen und Best Practices zu berücksichtigen.
PSR-12 zielt darauf ab, einen einheitlichen und lesbaren Code-Stil für PHP-Projekte zu schaffen. Dies erleichtert die Zusammenarbeit zwischen Entwicklern und sorgt für Konsistenz in der Codebasis.
namespace
-Deklaration muss eine Leerzeile stehen.use
-Anweisungen werden nach der namespace
-Deklaration gruppiert.namespace App\Controller;
use App\Service\MyService;
use Psr\Log\LoggerInterface;
{
einer Klasse oder Methode steht in der nächsten Zeile.public
, protected
, private
) sind bei allen Methoden und Eigenschaften zwingend erforderlich.class MyClass
{
private string $property;
public function myMethod(): void
{
// code
}
}
public function myFunction(
int $param1,
string $param2
): string {
return 'example';
}
{
muss in derselben Zeile wie die Kontrollstruktur stehen.if ($condition) {
// code
} elseif ($otherCondition) {
// code
} else {
// code
}
[]
) geschrieben werden.$array = [
'first' => 'value1',
'second' => 'value2',
];
?
vor dem Typ deklariert.public function getValue(?int $id): ?string
{
return $id !== null ? (string) $id : null;
}
<?php
-Tag beginnen und dürfen kein schließendes ?>
-Tag enthalten.PSR-12 erweitert PSR-2 um:
PSR-12 ist der Standard für modernen und konsistenten PHP-Code. Es bringt Klarheit und Struktur in PHP-Projekte, besonders bei Teams, die gemeinsam an einer Codebasis arbeiten. Mit Tools wie PHP_CodeSniffer
oder PHP-CS-Fixer
kannst du PSR-12 problemlos einhalten.
PSR-1 ist eine PHP-Standards-Empfehlung (PHP Standards Recommendation), die von der PHP-FIG (Framework Interop Group) erstellt wurde. Sie definiert grundlegende Codierungsstandards für PHP, um die Interoperabilität zwischen verschiedenen PHP-Projekten und -Frameworks zu gewährleisten. Das Ziel von PSR-1, auch als "Basic Coding Standard" bezeichnet, ist es, eine konsistente Grundlage für PHP-Code zu schaffen, was die Lesbarkeit und Zusammenarbeit bei Projekten im PHP-Ökosystem erleichtert. Die Hauptpunkte von PSR-1 umfassen:
Dateiformatierung:
<?php
oder <?=
Tags verwenden.Namensräume und Klassennamen:
StudlyCaps
-Stil (PascalCase) deklariert werden.Konstanten-, Eigenschaften- und Methodennamen:
CONST_VALUE
).camelCase
-Stil geschrieben werden.Autoloading:
include
- oder require
-Anweisungen zu vermeiden.PSR-1 gilt als grundlegender Standard und ergänzt PSR-2 und PSR-12, die detailliertere Codeformatierungsrichtlinien festlegen. Zusammen verbessern diese Standards die Lesbarkeit und Konsistenz von PHP-Projekten.
Eine Entity ist ein zentrales Konzept im Bereich der Softwareentwicklung, insbesondere im Domain-Driven Design (DDD). Es beschreibt ein Objekt oder einen Datensatz, der eine eindeutige Identität besitzt und im Laufe der Zeit seinen Zustand ändern kann. Die Identität einer Entity bleibt dabei immer bestehen, unabhängig davon, wie sich die Eigenschaften der Entity verändern.
Eindeutige Identität: Jede Entity hat eine eindeutige Kennung (z.B. eine ID), die sie von anderen Entities unterscheidet. Diese Identität ist das primäre Unterscheidungsmerkmal und bleibt über den gesamten Lebenszyklus der Entity gleich.
Veränderlicher Zustand: Im Gegensatz zu einem Value Object kann sich der Zustand einer Entity ändern. Zum Beispiel können sich die Eigenschaften eines Kunden (Name, Adresse) ändern, aber der Kunde bleibt durch seine Identität immer derselbe.
Geschäftslogik: Entities enthalten oft Geschäftslogik, die mit ihrem Verhalten und Zustand in der Domäne zusammenhängt.
Stellen wir uns eine Kunden-Entity in einem E-Commerce-System vor. Diese Entity könnte folgende Eigenschaften haben:
Wenn sich die Adresse oder der Name des Kunden ändert, bleibt die Entity durch ihre ID immer derselbe Kunde. Das ist der wesentliche Unterschied zu einem Value Object, das keine dauerhafte Identität hat.
Entities werden oft in Datenbanken durch Tabellen abgebildet, wobei die eindeutige Identität in Form eines Primärschlüssels gespeichert wird. In einem Objektmodell einer Programmiersprache wird die Entity durch eine Klasse oder ein Objekt dargestellt, das die Logik und den Zustand dieser Entität verwaltet.
In der objektorientierten Programmierung (OOP) bezeichnet ein "Trait" eine wiederverwendbare Klasse, die Methoden und Eigenschaften definiert, die in verschiedenen anderen Klassen verwendet werden können. Traits sind eine Möglichkeit, Code-Wiederverwendung und Modularität zu fördern, ohne die strikten Hierarchien der Vererbung zu verwenden. Sie ermöglichen es, Methoden und Eigenschaften in mehreren Klassen zu teilen, ohne dass diese Klassen in einer Vererbungshierarchie stehen müssen.
Hier sind einige wesentliche Merkmale und Vorteile von Traits:
Wiederverwendbarkeit: Traits ermöglichen die Wiederverwendung von Code in verschiedenen Klassen, was die Codebasis sauberer und wartbarer macht.
Mehrfachverwendung: Eine Klasse kann mehrere Traits verwenden und damit Methoden und Eigenschaften von verschiedenen Traits übernehmen.
Konfliktauflösung: Wenn mehrere Traits Methoden mit demselben Namen bereitstellen, muss die Klasse, die diese Traits verwendet, explizit angeben, welche Methode verwendet werden soll. Dies hilft, Konflikte zu vermeiden und eine klare Struktur zu gewährleisten.
Unabhängigkeit von der Vererbungshierarchie: Im Gegensatz zur Mehrfachvererbung, die in vielen Programmiersprachen komplex und problematisch sein kann, bieten Traits eine flexiblere und sicherere Möglichkeit, Code zu teilen.
Hier ein einfaches Beispiel in PHP, einer Sprache, die Traits unterstützt:
trait Logger {
public function log($message) {
echo $message;
}
}
trait Validator {
public function validate($value) {
// Validierungslogik
return true;
}
}
class User {
use Logger, Validator;
private $name;
public function __construct($name) {
$this->name = $name;
}
public function display() {
$this->log("Displaying user: " . $this->name);
}
}
$user = new User("Alice");
$user->display();
In diesem Beispiel definieren wir zwei Traits, Logger
und Validator
, und verwenden diese Traits in der User
-Klasse. Die User
-Klasse kann somit die Methoden log
und validate
nutzen, ohne dass sie diese Methoden selbst implementieren muss.
Properties (Eigenschaften) einer Klasse in der Programmierung sind spezielle Methoden oder Member, die den Zugriff auf die internen Daten (Felder oder Attribute) einer Klasse steuern. Sie dienen dazu, den Zugriff auf die Zustandsinformationen eines Objekts zu regeln und sicherzustellen, dass die Daten konsistent und unter Kontrolle gehalten werden. Properties sind ein wichtiger Bestandteil der objektorientierten Programmierung und bieten eine Möglichkeit zur Implementierung von Datenkapselung und Abstraktion.
Hier sind einige wichtige Merkmale von Properties in der Programmierung:
Getter und Setter: Properties haben normalerweise einen Getter und einen optionalen Setter. Der Getter ermöglicht das Lesen des Werts der Eigenschaft, während der Setter das Setzen des Werts ermöglicht. Dadurch wird der Zugriff auf die Daten kontrolliert.
Abstraktion: Properties ermöglichen die Abstraktion von Daten, indem sie eine öffentliche Schnittstelle bereitstellen, über die auf private Daten zugegriffen werden kann, ohne die Details der Datenimplementierung zu kennen.
Kapselung: Durch die Verwendung von Properties können Sie den Zugriff auf die internen Daten einschränken und sicherstellen, dass Änderungen an den Daten gemäß den definierten Regeln und Bedingungen erfolgen.
Lese- und Schreibzugriff: Einige Properties können schreibgeschützt (nur mit einem Getter) oder schreib- und lesegeschützt (mit Getter und Setter) sein, abhängig von den Anforderungen.
Syntax: Die Syntax zur Deklaration von Properties kann je nach Programmiersprache variieren. In C# und Java verwenden Sie beispielsweise die Schlüsselwörter get
und set
:
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
In diesem Beispiel gibt es eine Property namens "Name," die den Zugriff auf das private Feld "name" kontrolliert. Sie ermöglicht das Lesen und Setzen des Namens eines Objekts der Klasse "Person."
Properties sind hilfreich, um den Code lesbarer und wartbarer zu gestalten, da sie eine konsistente Schnittstelle zum Zugriff auf Daten bieten und es ermöglichen, Validierungslogik oder andere Aktionen beim Lesen oder Schreiben von Daten zu integrieren.