hi,
Hallo,
Sorry, aber ich muss einfach nochmal nachhaken, da mir das, was ich in der Klasse treibe, zu haarsträubend ist; inneinander verschachtelte str_replace und direkter zugriff auf $this-Variablen, statt die Variablen für die Funktionen mittels Parameter zu übergeben.
Es funktioniert Tadellos, nur ist das noch Sauber und soll ich auf diese Weise weitermachen?
Das Bsp. ist ohne Fehlerbehandlung, da ich es erst einmal anteste und es derzeit keine Fehler gibt.
Entschuldige, das ich erst jetzt antworte, aber ich hatte bisher nicht die Luft und den Kopf dafür ;).
<?php
error_reporting(E_ALL | E_STRICT);
header('Content-Type: text/html; charset=utf-8');
$_sDir = dirname(FILE) . '/';
$_msg = simplexml_load_file($_sDir . '[link:http://dj-tut.de/z_test/class/script-inc/i18n.xml@title=script-inc/i18n.xml]'); // auf das wesentliche gekürzt
// ausserhalb der Klasse isses eigendlich wurst wo du deine Daten her holst :)
$setting = array(); // Settings initialisieren
$setting['prefix'] = 'page'; // GET-Präfix
$setting['perpage'] = 15; // Dateien pro Seite
$setting['total_data'] = 452; // Daten gesamt
$setting['language'] = 'de'; // Sprache
$setting['msg'] = $_msg->$setting['language']; // XML mit passender Sprachsektion
$setting['getsite'] = get_numeric($setting['prefix']) ? $_GET[$setting['prefix']] : 1 ; // $_GET['page']class Pagination_builder
{
public function __construct($param) {
$this->msg = $param['msg']->pagination; // XML-Datei, direkt auf die gewünschte Sektion
$this->total_data = $param['total_data'];
$this->perpage = $param['perpage'];
$this->getsite = $param['getsite'];
$this->total_pages = $this->calculate_pages();
$this->pagefromto = $this->head_data();
}
private function calculate_pages() {
return ceil($this->total_data / $this->perpage);
}
// Du verwendest hier ein merkwürdiges Mischmasch aus 2 Möglichkeiten. Entweder schreibst du Funktionen mit Parametern und Rückgabewerten:
public function __construct($param) {
$this->total_pages = $this->calculate_pages($this->total_data, $this->perpage);
}
private function calculate_pages($total_data, $perpage) {
return ceil($total_data / $perpage);
}
// Oder du verwendest Funktionen, welche gleich die Klassenvariablen bearbeiten
public function __construct($param) {
$this->calculate_pages();
}
private function calculate_pages($total_data, $perpage) {
$this->total_pages = ceil($this->total_data / $this->perpage);
}
// Insgesamt finde ich es aber merkwürdig, weshalb du für ein ceil eine eigene Funktion schreibst ;)-
private function temp_replace($str) {
return str_replace('[/b]', "</strong>", str_replace('[b]', "<strong>", $str));
}
// Hier hast du die Funktion ja richtig meacht
private function head_data() {
return $this->temp_replace( sprintf($this->msg->pagefromto /* String aus der XML-File*/
,$this->getsite < $this->total_pages+1 && $this->getsite > 0
? $this->getsite /* $_GET ist kleiner als Gesamte Seitenanzahl */
: 1
, $this->total_pages));
}
}$_pagination = new Pagination_builder($setting);
echo $_pagination->pagefromto; // Ausgabe bei [link:http://dj-tut.de/z_test/class/?page=2@title=($_GET['page']==2)]: Seite 2 von 31
// Ansich auch eine Interesante Idee, aber ich würde ehr zu Funktionen greifen und die notwendigen Daten beim Aufruf berechnen
$_pagination->PrintPageHeader();
// oder
echo $_pagination->GetPageFooder();
function get_numeric($key) {
return (isset($_GET[$key]) AND is_numeric($_GET[$key])) ? $_GET[$key] : false ;
}
>
>
> Ist der Ansatz so Ok?
Sieht eigendlich recht gut aus.
> mfg
mfg Pryos