Zitat von hellbringer
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Notice : Undefined property
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von ChookaP Beitrag anzeigenIch habe meinen eigenen Webserver (nginx) der über OMV läuft, und ich meine zu wissen das ich manuell keine Log-Datei festgelegt habe. Deswegen die Frage. Aber klar dann muss ich das manuell machen um Log-Daten angezeigt zu bekommen.
Oder du installierst dir zum Testen ein All-in-one-Paket wie z.B. XAMPP. Da ist fast alles vorkonfiguriert und damit haben auch die meisten PHP-Programmierer Erfahrung.
Kommentar
-
Ja, ich kenne XAMPP. Fehler gefunden: Ich habe in der *.phtml anstatt: "<?= ... ?>", "<?php ... ?> geschrieben.... jetzt gehts. Mein Fehler. Über XAMPP hatte ich wenigsten folgende Ausgabe:
title ?>
content ?>
Das hat mich auf die Idee gebracht, es könnte ja was mit meiner *.phtml Datei nicht stimmen...
Über NGINX hatte ich nur einen Whitescreen. So, jetzt gehts, alles klar, danke. Dann schau ich mal wie ich das umsetze. Gruß.
Kommentar
-
Die anderen Funktionen habe ich schon verstanden aber was macht diese Funktion?
PHP-Code:
public function __get($name) {
if (!array_key_exists($name, $this->vars)) {
throw new Exception('Missing variable: ' . $name);
}
return htmlspecialchars($this->vars[$name], ENT_COMPAT, $this->encoding);
}
Kommentar
-
Zuletzt geändert von hellbringer; 13.09.2018, 14:56.Zitat von ChookaP Beitrag anzeigenIst das "__get" in TemplateContext.php dieses "__get": http://php.net/manual/de/mongoclient.get.php ? Ist das magisch, oder wie dat heißt?
Es ist eine schnell zusammengetippte Klasse, daher __get(). Wenns sauberer sein soll, würde ich das ArrayAccess-Interface implementieren. Bin kein Fan dieser magischen Getter und Setter, da sie schwerer nachvollziehbar sind und Kollisionen ermöglichen.
Kommentar
-
Zitat von hellbringer Beitrag anzeigen
Für sowas nimmt man eine Template-Engine. Das kann auch eine schlanke selbstgebastelte Klasse sein:
PHP-Code:class TemplateContext {
private $vars = [];
private $encoding;
public function __construct($encoding = 'UTF-8') {
$this->encoding = $encoding;
}
public function __get($name) {
if (!array_key_exists($name, $this->vars)) {
throw new Exception('Missing variable: ' . $name);
}
return htmlspecialchars($this->vars[$name], ENT_COMPAT, $this->encoding);
}
public function assignVars(array $vars) {
foreach ($vars as $name => $value) {
$this->vars[$name] = $value;
}
}
public function assignVar($name, $value) {
$this->vars[$name] = $value;
}
public function render($templatePath) {
if (!is_readable($templatePath)) {
throw new Exception('Cant read template: ' . $templatePath);
}
$content = '';
ob_start();
try {
require $templatePath;
$content = ob_get_contents();
} catch (\Exception $exception) {
throw new Exception($exception->getMessage() . ' (in template ' . $templatePath . ')');
} finally {
ob_end_clean();
}
return $content;
}
}
PHP-Code:<h1><?= $this->title ?></h1>
<p><?= $this->content ?></p>PHP-Code:$context = new TemplateContext();
$context->assignVar('title', 'Test page');
$context->assignVar('content', 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr');
echo $context->render('template.phtml');
Das:
PHP-Code:abstract class ViewController {
/**
* @var TemplateContext
*/
public $view;
public function __construct() {
$this->view = new TemplateContext();
}
}
/**
* Class MyController
*/
class MyController extends ViewController {
/**
* @param UserRepository $repository
* @throws Exception
*/
public function testAction(UserRepository $repository) {
$userList = $repository->getUsers();
$this->view->assignVar('userList', $userList);
$this->view->render('test.phtml');
}
}
Für das:Code:ArrayAccess-Interface
Kommentar
Kommentar