JavaScript OOP für PHP-Entwickler

Für PHP-Entwickler ist es relativ schwer sich an die OOP von JavaScript zu gewöhnen. Das liegt daran, dass JavaScript-Klassen Prototype-basiert sind und die Klassen daher anders definiert werden als man es aus PHP, Java oder C# kennt. Um die Umstellung von PHP/Java/C# etwas leichter zu gestalten, habe ich mal ein JavaScript-PHP-Equivalent von zwei einfachen Klassen geschrieben, die exakt das gleiche tun.

Normale Klasse

Fangen wir mal an mit einer einfachen Person-Klasse, die nur einen Namen und die Anrede kennt und die Person ansprechen bzw. verabschieden kann.

Die Klasse in PHP:

<?php
class Person
{
	protected $name;
	protected $gender;
 
	public function __construct($name, $gender)
	{
		$this->name = $name;
		$this->gender = $gender;
		$this->sayHello();
	}
 
	public function sayHello()
	{
		echo "Hallo $this->gender $this->name.";
	}
 
	public function sayGoodbye()
	{
		echo "Bis bald $this->gender $this->name.";
	}
}

Und die gleiche Klasse in JavaScript:

View Code JAVASCRIPT
function Person(name, gender) {
	if(name && gender)
	{
		this.name = name;
		this.gender = gender;
		this.sayHello();
	}
}
 
Person.prototype.sayHello = function() {
	document.write("Hallo "+this.gender+" "+this.name+".");
};
 
Person.prototype.sayGoodbye = function() {
	document.write("Bis bald "+this.gender+" "+this.name+".");
};

Vererbung

Als nächstes eine einfache Vererbung. Es gibt eine zweite Klasse „Scientist“, die alle Eigenschaften und Methoden von Person erbt und sie um jeweils eine Eigenschaft und eine Methode erweitert.

Vererbung in PHP:

<?php
require_once 'Person.php';
 
class Scientist extends Person
{
	protected $department;
 
	public function __construct($name, $gender, $department)
	{
		$this->department = $department;
		parent::__construct($name, $gender);
	}
 
	public function research()
	{
		echo "$this->name forscht $this->department.";
	}
}

Und die gleiche Vererbung in JavaScript:

View Code JAVASCRIPT
function Scientist(name, gender, department) {
	Person.call(this, name, gender);
	this.department = department;
}
 
Scientist.prototype = new Person();
Scientist.prototype.constructor = Scientist;
Scientist.prototype.research = function() {
	document.write(this.name+" forscht "+this.department+".");
};

Aufruf der Klassen

Kommen wir nun zum leichtesten Teil – dem Aufruf bzw. Verwendung der Klassen. Hier unterscheiden sich JavaScript und PHP fast gar nicht.

PHP:

$einstein = new Person("Albert Einstein", "Herr");
echo "<br/>";
$einstein->sayGoodbye();
echo "<br/><br/>";
 
$newton = new Scientist("Isaac Newton", "Herr", "Physik");
echo "<br/>";
$newton->research();
echo "<br/>";
$newton->sayGoodbye();

Und in JavaScript:

View Code JAVASCRIPT
var einstein = new Person("Albert Einstein", "Herr");
document.write("<br/>");
einstein.sayGoodbye();
document.write("<br/><br/>");
 
var newton = new Scientist("Isaac Newton", "Herr", "Physik");
document.write("<br/>");
newton.research();
document.write("<br/>");
newton.sayGoodbye();

Die Ausgabe ist für beide identisch:

Hallo Herr Albert Einstein.
Bis bald Herr Albert Einstein.

Hallo Herr Isaac Newton.
Isaac Newton forscht Physik.
Bis bald Herr Isaac Newton.

Ich hoffe ich konnte euch damit die Unterschiede der beiden Sprachen klar machen. Wer möchte kann sich die Beispiele auch als ZIP-Archiv herunterladen.

Homepagebaukästen – müssen wir (die Entwickler) uns Sorgen machen?

Vor einigen Tagen habe ich einen Artikel gelesen, in dem diverse Homepagebaukästen vorgestellt wurden. Bisher hatte ich mich nicht großartig mit dem Thema beschäftigt, weil ich – wie viele andere auch – davon ausgegangen bin: „Homepagebaukästen sind unflexibel und daher nur was für den Bäcker von nebenan, der sich keine Agentur leisten kann.“. Der besagte Artikel hat aber gezeigt, dass Homepagebaukästen sich inzwischen weiterentwickelt haben. Man hat die Auswahl aus über 100 fertigen Templates und einige Anbieter bieten sogar Apps (Erweiterungen), die sich kinderleicht in das System integrieren lassen. Die Seiten sind aus technischer Sicht bereits grundlegend Suchmaschinen optimiert und die Texte bieten zahlreiche Textformatierungen. Und die Entwicklung ist noch nicht zu Ende, die Anbieter verbessern ihre Systeme immer weiter. Wenn man ehrlich ist, dann bieten Homepagebaukästen also mehr Qualität als die meisten Freelancer und kleine Agenturen erzielen können. Ich habe schon genug Webseiten gesehen, wo man besser einen solchen Baukasten eingesetzt, als 10.000€ für eine Agentur oder Freelancer gezahlt hätte.

Man bekommt mit einem Homepagebaukasten also eine gute und kostengünstige Webseite mit inzwischen viel Spielraum für Individualisierungen und einer super einfachen Bedienung. Müssen wir uns also Sorgen machen, dass wir bald arbeitslos sind? Werden wir jetzt von Homepagebaukästen ersetzt?
Nein! Das gilt zumindest für diejenigen, die einen hohen Qualitätsstandard und die Entwicklung von Spezialanwendungen anbieten können. Kleine Agenturen und Freelancer, die sich auf einfache Internetauftritte für kleine Unternehmen spezialisiert haben (und i.d.R. WordPress verwenden), können dagegen problemlos durch einen Homepagebaukasten ersetzt werden. Mittelständische und große Unternehmen kommen nicht drumherum eine gute Agentur zu beauftragen wenn es darum geht, dass sich die Website von anderen deutlich absetzten soll, man technisch auf dem aktuellsten Stand sein will, oder man Beratung hinsichtlich SEO, Analytics und Inhalt benötigt.

Vorteile von Homepagebaukästen Nachteile von Homepagebaukästen
+ sehr günstig
+ sehr einfache Bedienung
+ keine besonderen Vorkenntnisse nötig
+ wenige Sicherheitslücken
+ grundlegende technische SEO
– keine individuellen Designs
– keine Beratung für redaktionelle Inhalte und SEO
– keine Spezialanwendungen
– nicht unbedingt modern

Der Homepagebaukasten hat seine Daseinsberechtigung, kann aber den (guten) Entwickler nicht ersetzten. Nichtsdestotrotz denke ich, dass sich in den kommenden Jahren mehr für einen Baukasten entscheiden und die kleinen, schlechten Agenturen und Freelancer dadurch ersetzt werden.