/src/poko/views/renderers/Php.hx
Haxe | 80 lines | 45 code | 8 blank | 27 comment | 2 complexity | 3fe0bdf4f8b06a85eb7973bfce6425b7 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
- /*
- * Copyright (c) 2008, TouchMyPixel & contributors
- * Original author : Tony Polinelli <tonyp@touchmypixel.com>
- * Contributers: Tarwin Stroh-Spijer
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE TOUCH MY PIXEL & CONTRIBUTERS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE TOUCH MY PIXEL & CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- package poko.views.renderers;
-
- import php.FileSystem;
- //import poko.views.renderers.IRenderer;
- import poko.views.Renderable;
- import templo.Loader;
-
- class Php implements Renderable
- {
- public var template:String;
- public var data:Dynamic;
-
- public function new(?template:String )
- {
- this.template = template;
- data = { };
- }
-
- public function render():String
- {
- var tpl = "./tpl/php/" + template;
- if(FileSystem.exists(tpl))
- {
- untyped __call__("ob_start");
- untyped __call__("extract", __php__("(array)$this->data"));
- untyped __call__("include", tpl);
- var out:String = untyped __call__("ob_get_contents");
- untyped __call__("ob_end_clean");
- return out;
- } else {
- throw "Php Template is missing: " + template;
- return null;
- }
- return "";
- }
-
- public function assign(field:String, value:Dynamic):Void
- {
- Reflect.setField(data, field, value);
- }
-
- public static function parse(template:String, ?data:Dynamic):String
- {
- var renderer = new Php(template);
- renderer.data = data;
- return renderer.render();
- }
-
- public function toString():String
- {
- return "[PhpView " + template + "]";
- }
- }