Ein sehr interessanter Ansatz zur Erzeugung von Dokumenten im Web wird bei phphatesme.com beschrieben. HTML-zu-PDF-Konvertierung und programmatischer Ansatz sind ja bekannt. Der neue Ansatz bedient sich einer SOAP Schnittstelle und Templates. Unter folgender URL gibts mehr dazu:
Schlagwort: PHP
Hier der Link zu PHPBench. Benchmarks für PHP Funktionen.
Hier der komplette PHPUnit Guide um entsprechende Tests zu seiner Applikation zu schreiben.
Der ultimative Guide für Objektorientierung, Entwurfsmuster und Modellierung sowie fortgeschrittene Datenbankprogrammierung von Sebastian Bergmann
Um modular und agil in Kohana zu entwickeln, wurde ein Skript Kollektor notwendig, der aus allen Controllern (Template- oder Standard-Controllern) Skripte (CSS, Javascript) sammeln kann.
Diese Scripte werden dann auf den jeweiligen Mastertemplates wieder an den richtigen Stellen eingebunden.
Dazu habe ich einen neuen Helper unter application/helpers/collector.php eingerichtet.
class Collector_Core { /** * Arrays containing URL's to scripts/styles (fill with standards) * @var string */ static protected $scripts = array(); static protected $styles = array(); /** * Adds a url to store * @param string $file the local path to file * @return void */ static public function addJs($file) { self::$scripts[] = $file; } /** * Adds a url to store * @param string $file the local path to file * @return void */ static public function addCss($file) { self::$styles[] = $file; } /** * Generates/renders collectors items * @param boolean $print whether to echo the output or just return rendered string * @return string the rendered output */ static public function renderJs($print = false) { $scripts = array_unique(self::$scripts); $output = html::script($scripts); if ($print) { echo $output; } else { return $output; } } /** * Generates/renders collectors items * @param boolean $print whether to echo the output or just return rendered string * @param string|array $media type for this style (all, screen, print, media) * @return string the rendered output */ static public function renderCss($print = false, $media = 'all') { $styles = array_unique(self::$styles); $output = html::stylesheet($styles, $media); if ($print) { echo $output; } else { return $output; } } } // end of Collector_Core
Dieser Helper kann nun aus allen Controllern heraus befüllt werden.
class Welcome_Controller extends Template_Controller { /** * set master template */ public $template = 'master_default.tpl'; /** * default constructor * @param void * @return void */ public function __construct() { // load parent constructor parent::__construct(); // collect scripts and styles collector::addCss('/css/fancybox'); collector::addJs('/js/jquery.1.3.2'); collector::addJs('/js/jquery.fancybox'); } /** more code here */ } // end of Welcome_Controller
Nachdem nun alle relevanten Skripte eingesammelt wurden, kann man diese auf dem Template wieder ausgeben lassen.
<?php collector::renderCss(true, 'all'); ?> <!-- html code here --> <?php collector::renderJs(true); ?>
Der Kollektor sorgt dafür das keine doppelten Skripte geladen werden.