Derzeit arbeiten wir an der Clientleiste. Diese wird mit objektorientierem Javascript gemacht.
Beispielcode (JavaScript):
Derzeit arbeiten wir an der Clientleiste. Diese wird mit objektorientierem Javascript gemacht.
Beispielcode (JavaScript):
OOP ist normalerweise nicht so performant wie Spaghetti-Code. Objekte zu erstellen ist sehr Zeitaufwendig.
Aber bei (richtigem) OOP hat man viele andere Vorteile, wie z.B. lesbarkeit des Codes, "maintainability" bzw Wartbarkeit uvm.
Natürlich bringt OOP wenig wenn man das Prinzip von Objekten nicht versteht.
HabboR Besucherzahlen bei Userzahlen von 100-200 (jeder Punkt ist ein Tag)
HabboR Besucherzahlen bei Userzahlen von über 500 (Berge sind Wochenenden, langanhalten hohe Besuchzahlen wie ganz links Ferien)
Die Gruppen-Funktion wurde jetzt angefangen!
Ich poste mal ein Snippet aus einer Klasse, welche wir bei den Gruppen verwenden werden.
Um das Gruppenbild zu generieren haben wir einen Badgeparser programmiert.
Code
<?php
class GroupBadge
{
private $form;
private $color;
private $elements = array();
private $colorList =
array(
"black" => 0,
"yellow" => 1,
"orange" => 2,
"lightgreen" => 3,
"darkgreen" => 4,
"lightblue" => 5,
"darkblue" => 6,
"lightpink" => 7,
"darkpink" => 8,
"lightred" => 9,
"darkred" => 10,
"white" => 11,
"lightgrey" => 12,
"darkgrey" => 13,
"lightbrown" => 14,
"darkbrown" => 15,
"verylightblue" => 16,
"lightyellow" => 17,
"verylightgreen" => 18,
);
public function __construct($badgeCode = null)
{
if (!is_null($badgeCode))
{
$badgeParts = explode("s",$badgeCode);
$this->form = substr($badgeParts[0],1,2);
$this->color = substr($badgeParts[0],3,2);
$elements = array_values(array_slice($badgeParts,1));
foreach ($elements as $elementCode)
{
$this->elements[] = new GroupBadgeElement($elementCode);
}
}
}
public function getForm()
{
return (int)$this->form;
}
public function getColor()
{
return (int)$this->color;
}
public function setForm($id)
{
$this->form = $this->formatNumber($id);
}
public function setColor($id)
{
$this->color = $this->formatNumber($id);
}
public function setColorByName($name)
{
$this->color = '00';
if (isset($this->colorList[$name]))
{
$this->color = $this->formatNumber($this->colorList[$name]);
}
}
public function getCode()
{
$code = 'b'.$this->form.$this->color.'X';
foreach ($this->elements as $element)
{
$code .= $element->getCode();
}
return $code;
}
public function getElement($key)
{
return $this->elements[$key];
}
private function formatNumber($number)
{
$number = strlen($number) > 1 ? $number : '0'.$number;
return $number;
}
public function addElement(GroupBadgeElement $element)
{
$this->elements[] = $element;
}
}
class GroupBadgeElement
{
private $form;
private $color;
private $position;
private $colorList =
array(
"black" => 0,
"yellow" => 1,
"orange" => 2,
"lightgreen" => 3,
"darkgreen" => 4,
"lightblue" => 5,
"darkblue" => 6,
"lightpink" => 7,
"darkpink" => 8,
"lightred" => 9,
"darkred" => 10,
"white" => 11,
"lightgrey" => 12,
"darkgrey" => 13,
"lightbrown" => 14,
"darkbrown" => 15,
"verylightblue" => 16,
"lightyellow" => 17,
"verylightgreen" => 18,
);
public function __construct($elementCode = null)
{
if (!is_null($elementCode))
{
if ($elementCode[0] == 's')
{
$this->form = substr($elementCode,1,2);
$this->color = substr($elementCode,3,2);
$this->position = substr($elementCode,5,1);
}else{
$this->form = substr($elementCode,0,2);
$this->color = substr($elementCode,2,2);
$this->position = substr($elementCode,4,1);
}
}
}
public function getForm()
{
return (int)$this->form;
}
public function getColor()
{
return (int)$this->color;
}
public function setForm($id)
{
$this->form = $this->formatNumber($id);
}
public function setColor($id)
{
$this->color = $this->formatNumber($id);
}
public function setColorByName($name)
{
$this->color = '00';
if (isset($this->colorList[$name]))
{
$this->color = $this->formatNumber($this->colorList[$name]);
}
}
public function setPosition($pos)
{
$this->form = $id;
}
public function getCode()
{
return 's'.$this->form.$this->color.$this->position;
}
private function formatNumber($number)
{
$number = strlen($number) > 1 ? $number : '0'.$number;
return $number;
}
}
?>
Alles anzeigen
Mit dieser Klasse kann man relativ einfach mit Badgecodes arbeiten.
Die beste Lösung ist, wenn man Erfahrung hat und alles einzeln selbst schließt, und nicht nen lachhaften Code zu erstellen, der jeden Mist filtert.
Tipp: mysql_real_escape_string(); - Außerdem ist es sogar nicht schwer!
Exakt.
- mysql_real_escape_string() nur beim Eintragen in die Datenbank
- htmlentities() oder Sonstiges bei der Ausgabe von Texten in der Datenbank
Das ist einer der billigsten und schlechtesten Lücken fixes.
Warum sollte man Html beim eintragen in die Datenbank filtern? Es reicht doch völlig bei der Ausgabe des Textes.
Ich habe nichts gegen Schwule oder Lesben.
Aber mal ehrlich, Gott hat Adam und Eva erschaffen
und nicht Hans und Peter, oder?
Wenn wir davon ausgehen, dass Gott existiert, warum existieren dann Schwule?
Wenn er keine schwule Menschen haben möchte, hätte er doch einfach sagen können, dass es keine schwulen Menschen geben soll.
Deswegen ist die Argumentation "Gott hat Adam und Eva erschaffen und nicht Hans und Peter" relativ nutzlos.
Wenn er keine schwulen Menschen haben möchte, warum gibt es dann welche?
Achtung: Dieser Thread soll nicht als Flamebeitrag dienen, sondern soll nur eine Diskussion sein. ICH BITTE ALLE MODERATOREN, DESTRUKTIVE BEITRÄGE ZU LÖSCHEN, DA ES SONST NUR FLAME GEBEN WRID!
Hey Leute,was denkt ihr, welche Religion ist die Richtige (wenn man überhaupt richtig oder falsch sagen kann). Im Koran (heiliges Buch der Muslimen) und der Bibel (heiliges Buch der Christen) gibt es viele Similaritäten, aber auch viele Gegenseitigkeiten. So z.B. wird von beiden "Büchern" von Adam und Eva erzählt, aber auch von dem Christentum (beim Koran) und dem Islam (bei der Bibel).
Mich persönlich interessiert es wirklich was ihr darüber denkt, denn ich denke, dass es einige verschiedene Meinungen geben wird - egal über oder für den Christentum oder dem Islam.
Bitte lasst nur konstruktive Meinungen da, denn ich habe keinen Bock auf die ganzen Leute die auf Besserwisser tun und im realen Leben nichts einhalten, was sie hier versprechen.
Eine Umfrage werde ich hier mal nicht einblenden, da es sowieso viele Leute gibt die nach Lust und Laune bewerten.
Eigentlich sollte die rotmarkierte Passsage nicht möglich sein, da die Bibel meines Wissens früher als der Koran verfasst worden ist, und die Verfasser der Bibel nicht von der islamischen Religion wissen konnten.
ItsDario: nur weil man Atheist ist muss es nicht heißen, dass man Religionsdiskussionen mundtot machen möchte.
960px in der Breite ist so ziemlich der Standart für Desktop Webseiten.
Es liegt nicht an seinem Deutsch, sondern an DEINEM. Mach deine Augen auf und lies es genauer, ich verstehe was er/sie meint, sein/ihr Deutsch ist zwar nicht Perfekt aber ausreichend, sodass man es verstehen kann..
Nochmal für die, die es nicht hinbekommen, sein/ihr Deutsch zu verstehen: Er/Sie will von euch Meinungen wissen, wie ihr das Index findet (zu leer usw).
B2T:
Ich finde das Index eigentlich Passend, aber was mir nicht gefällt ist, dass dieses Logo unten ist.
Ich denke, er wollte sagen, dass die Index auf Deutsch übersetzt praktischer wäre.
Gute Idee, wird aber an einer schlechten Umsetzung scheitern.
Hallo,
ich konnte öfters beobachten, dass es Probleme mit den Farben der PHP-Code-Box gibt.
Beispiel:
public function sortByAttributeString($attr)
{
usort($this->list, function($a,$b) use ($attr){
return strcmp($a->$attr,$b->$attr);
});
array_values($this->list);
return $this;
}
$result = $database->query("SELECT * FROM users LIMIT 5");
$objectArray = new ObjectArray();
$objectArray->fromMySQLiResult($result);
$nList = $objectArray->findByCallback(function($listObject){
return $listObject->rank > 5;
});
foreach ($nList as $user)
{
echo $user->username.'<br>';
}
Alles anzeigen
Diese sind für die dunklen Designs von Retrotown viel zu dunkel und man muss den Text erst makieren um etwas zu erkennen.
Vorallem die blauen Farben sind auf den Hintergrund kaum zu erkennen.
Schön wäre es, wenn die Farben etwas heller wären, damit man ohne bedenken diese Code-Boxen benutzen kann.
Oh..... Ich glaube du weißt nicht was HTML5 ist oder? Na gut, hier das ist HTML5 ", , , </article>, </aside>, ".. Und du willst uns klarmachen dass Du ein Habbo in HTML5 programmierst. Na gut, träum weiter.
Grüßelein Undeadmau5...
Mit HTML5 kamen CSS3 inklusive Transform, das Canvas-Element, WebSockets und viele weitere JavaScript-APIs uvm. Da ist viel mehr dabei als irgendwelche unnötigen HTML-Tags.
Wie machst du die Client-Server-Verbindung? Wird dies über WebSockets laufen?
Wird alles aus HTML Elementen bestehen oder wirst du Canvas oder anderes benutzen?
Wenn du nur mit HTML Elementen arbeiten wird: Wie wirst du komplexere Formen klickbar machen? Mit mehreckigen Polygon-Areas in einer Map? Weil Bilder sind, als Element, viereckig und der Hintergrund einer komplexen Form könnte somit nicht klickbar sein.
Nein! Eben nicht! OOP sollte man erst anfangen zu lernen wenn man PHP gut kann.
Und ausserdem sollte ein CMS nicht nur in OOP sondern auch in "Spaghetti" Code programmiert werden.
Denn bei der reinen OOP wird eigentlich immer ein so genannter "Overhead" erzeugt, also eine Art von objektorientiertem Wasserkopf.
Welcher Code ist schöner zu lesen und einfacher zu verstehen?
Spaghetti:
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT * FROM users WHERE username = '$username'"); // users Tabelle nach den Namen "$username" durchsuchen
if (mysql_num_rows($result) > 0) // Benutzer existiert
{
$row = mysql_fetch_assoc($result); // Ergebnis in Array-Form darstellen
echo 'Aktuelle Talerzahl: '.$row['credits']; // Taleranzahl ausgeben
$newCreditsCount = $row['credits'] + 500; // Talerzahl um 500 erhöhen
$result2 = mysql_query("UPDATE users SET credits = '$newCreditsCount' WHERE username = '$username'"); // Taleranzahl um 500 erhöhen
echo 'Neue Talerzahl: '.$newCreditsCount; // Neue Talerzahl ausgeben
}
Alles anzeigen
OOP:
// $userFactory: Klasse, welche "User" Objekte zurückgeben kann, nachdem man eine Methode wie z.B "getByUsername($username)" aufruft
$user = $userFactory->getByUsername($_POST['username']); // Benutzer über Benutzernamen erhalten
if ($user != null) // Benutzer existiert
{
echo 'Aktuelle Talerzahl: '.$user->credits; // Attribut credits ausgeben
$user->addCredits(500); // 500 Taler hinzufügen
echo 'Neue Talerzahl: '.$user->credits; // Attribut credits ausgeben
}
Deswegen denke ich, dass OOP am anfängerfreundlichsten ist.
ZitatUnd ausserdem sollte ein CMS nicht nur in OOP sondern auch in "Spaghetti" Code programmiert werden.
Ich habe eine CMS, bei dem die Zeilenanzahl der Sachen die außerhalb einer Klasse stehen 4 ist.
$connection = new mysqli("", "", "", "");
$View = new View();
$ModelFactory = new ModelFactory($connection);
new App($View, $ModelFactory);
Und es ist einfach zu verstehen, einfach zu programmieren und einfach zu erweitern.
Wenn ich ein weiteres mal
Zitatnew App($View, $ModelFactory);
einfüge, dann wird die Seite perfekt ohne Probleme zwei mal exakt gleich dargestellt.
ZitatDas heißt PDO, OOP, MySQLi etc. werden nicht dabei sein
Das heißt ja, dass die Noobs noch blöder und überhaupt nichts dazu lernen werden.
Vorallem bei Anfängern sollte man denen "reinprügeln" objekt orientiert zu programmieren und keinen Spaghetti Code zu schreiben.
Ansonsten werden diese sich in dem Spaghetti-Code System festfahren, kein Stück weiterkommen und sich sagen "huehue warum soll der code gutt aussehn hauptsache funktioniert oder XDDD"
Objekt Orientiert ist nicht schwer und vereinfacht vieles, wie Beispielsweise die wiederverwendung von einzelnen Codes und vielem mehr.
Login Page ist nun fertig. Meinungen dazu?
Den weißen Text sieht man nicht so gut auf dem Hintergrundbild.
Nächstes Update
Benutzer des Monats und die Benutzerinformationen wurden wurden fertiggestellt.
Me-Seite
Me-Seite (nachdem man 2 Zahlen geändert hat)
Community Seite
Auch hier sieht man, dass man bereits verwendete Plugins ganz einfach wiederverwenden kann.
Die Benutzerinformation auf der Community Seite ist nur ein Beispiel für die Wiederverwendung.
Diese wird später nicht mehr auf der Community Seite sichtbar sein.
Nach langer Zeit mal wieder ein Update:
Aufgrund von Zeitmangel war es mir nicht möglich an Xenon viel weiter zu machen.
Da ich jetzt aber wieder Zeit habe wird es wie üblich weitergehen.
Es wurde nun ein weiteres Template erstellt, welches man beliebig austauschen kann.
Zudem haben wir die MVC Struktur "geändert". Dabei gehen Model und Controller stärker ineinander über, damit wir ein einfach zu verwendendes Plugin System bieten können.
Me-Seite (Zum Teil sind noch Platzhalter sichtbar)
Community Seite
Bei beiden Seiten wird der gleiche News Slider verwendet, welchen man durch eine PHP Methode beliebig anpassen kann. Dies stellt ein Plugin dar.
Die "Benutzer des Monats"-Box ist auch ein Plugin, und kann genauso auf verschiedensten Seiten verwendet und beliebig angepasst werden.
Das Ziel wird sich jetzt auf Erweiterbarkeit und Flexibilität richten.
Dir gefällt der News Slider nicht? Dann deaktivier ihn mit einem klick!
Du brauchst aber einen News Slider? Dann downloade dir ein neuen News Slider und füge ihn als Plugin ein.
Das hier sichtbare Design wird eine Alternative für das andere Design sein.