php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 16.06.2011, 02:27  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Trivial implementiert wohl so:

PHP-Code:
<?php

class SequenceHub
{
    protected static 
$stack = array();
    protected static 
$funcs = array();

    public static function 
AddFor($iterations)
    {
        
array_push(self::$stack$iterations);
    }

    public static function 
RunLastFor()
    {
        for (
$i self::$stack[count(self::$stack) - 1]; $i 0$i--) {
            foreach (
self::$funcs as $func) {
                
$func();
            }
        }

        
array_pop(self::$stack);

        
self::$funcs = array();
    }

    public static function 
registerFunction(Closure $func)
    {
        
self::$funcs[] = $func;
    }
}


function 
anfangSchleife($count)
{
    
SequenceHub::AddFor($count);
}

function 
texteditor($name)
{
    
SequenceHub::registerFunction(function () use ($name) { texteditor_real($name); });
}

function 
texteditor_real($name)
{
    echo 
$name '<br>';
}

function 
endeSchleife()
{
    
SequenceHub::RunLastFor();
}


anfangSchleife(5);
texteditor('Peter');
endeSchleife();

anfangSchleife(3);
texteditor('Paul');
texteditor('Mary');
endeSchleife();
Die Funktionen der „Templatesprache“ wären dann praktisch Macros für Methodenaufrufe von SequenceHub.

Irgendwie hinhauen würde das wohl (kann es gerade nicht einschätzen, was damit möglich ist und was nicht). tr0y hat etwaige Nachteile ja benannt.
__________________
Blog | Buch | Kaloa

Geändert von mermshaus (16.06.2011 um 02:30 Uhr).
mermshaus ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.06.2011, 08:23  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

ja nikosch muss man, im ersten baust du etwas "in gedanken", im zweiten qoute direkt da wo der befehl steht ins template ohne darauf zu warten das irgendetwas fertig wird. Er setzt ja voraus das seine Guffel-Functions präsent bleiben, was nach meinen augen nur "gut" per Qoute 2 geht.

@mermshaus, jau. Aber der Spass das implementieren zu wollen hört bei geschichten wie Template Inheritance und der Realisierung von Variablen Scopes und anderem schnickschnack auf
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 16.06.2011, 13:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Es ist ein frontend cms für nen kunden,er möchte einfache php functions "function()" haben.
Jede Funktion nochmal zu wrappen und zu registrieren hatte er sicher nicht im Sinn, als er nach einer einfachen Lösung gefragt hat
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.06.2011, 14:06  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Wobei ich unter einfach eher sowas in Richtung WYSIWYG-Editor verstehe der alles in allem Webcontent-Publishing like Word vermittelt als das rumgefuchtel mit "functions()" und dem erlernen einer Pseudosprache für den Enduser. Da könnte man ja gleich Smarty oder <insert other template engine> benutzen und dort etwaige funktionen für die templates registrieren die smarty bis dahin noch nicht auf "super einfachen Wege" kann.

Ich denke eher der TE sollte mal mit seinem Enduser sprechen ob er es einfach will oder ob er extra etwas lernen möchte ( eine Pseudo-Sprache ). Wenn der dann für Einfach ist: "hallo WYSIWYG-Editor!".

Überzeugungsarbeit inc.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 16.06.2011, 14:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wie schon gesagt, für Nur-Text (Wysiwyg) fällt mir ohnehin kein sinnvoller Einsatz für ein Repeating ein. Aber er will wohl dynamische Blöcke editieren, forms oder was weiß ich. Das kann aber auch jeder "BBeske" Ausdruck wie [[TheMightyFormItem]x5]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.06.2011, 20:55  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
rixo befindet sich auf einem aufstrebenden Ast
Standard

Also, erstmal sorry fürs letzte mal, scheint ja doch nett zu sein

Ich erkläre mal besser mein gesamtes Projekt.
Ich habe bis jetz ein "cms" ohne mysql geschrieben, das komplett über das Frontend läuft.
In diesem "cms" habe ich verschiedene funktionen eingebettet.
Erstmal eine abfrage ob der ordner meines cms existiert, wenn ja werden alle wichtigen dateien eingebunden.

Der user braucht dann nurnoch an gewünschten stellen in seiner index.php,
entweder ein kurzen einzeiligen text über:
PHP-Code:
<?php shorttext("name"); ?>
genau so geht das dann mit allen meinen funktionen:
PHP-Code:
langer text  <? longtext("name"); ?>
richtext/wysiwyg-Editor  <? richtext("name"); ?>
bild  <? image("name""link""target""lightbox_true"); ?>
so was jetzt noch fehlt, ist eine schleife, in der ich biliebig meine anderen functions platzieren kann.
Über einen "+"-Button, soll diese "Reihe" dann kopiert werden und die namen der jeweiligen um eine zahl erweitert werden.
also wird aus shorttext(name) shorttext(name_1row) oder so...
und dann über der jetzigen reihe eingefügt.

Verwendung dafür wäre beispielsweise eine newsfunktion, preislisten...

Vielleicht hilft euch das ja, ich muss auf jeden fall in der "index.php" bleiben, index.xml etc ist leider nicht möglich

Lexen und parsen hab ich keine Ahnung von
rixo ist offline   Mit Zitat antworten
Alt 16.06.2011, 21:07  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Der user braucht dann nurnoch an gewünschten stellen in seiner index.php,
entweder ein kurzen einzeiligen text über:
Um was zu erreichen? Ich sehe da keinen SInn drin, irgendwo müssen die Angaben ja ohnehin verarbeitet werden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.06.2011, 21:16  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
rixo befindet sich auf einem aufstrebenden Ast
Standard

ja, klar, ausgegeben wird ja nur das was er dann als admin im popup eingibt. nicht eingeloggt sieht man dann halt nur das was eingegeben wurde, was in einer externen datei gespeichert/ausgelesen wird.
rixo ist offline   Mit Zitat antworten
Alt 16.06.2011, 22:41  
Neuer Benutzer
 
Registriert seit: 20.01.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
zcei befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das mit dem "+" Button richtig interpretiere wäre das eher eine Aufgabe für JS/AJAX.
Einfach beim onClick von dem "+" Button im DOM einen neuen <was auch immer für ein Element das wird>-Eintrag anlegen und beim Submit mit einem Array auswerten lassen.
Dann kann man Standardmäßig im code x-Stück anzeigen lassen und den Rest per "+".
Wäre das nicht die sinnvollere Lösung?
zcei ist offline   Mit Zitat antworten
Alt 17.06.2011, 06:55  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Mal als gegenbeispiel, deine Funktionen dort oben als Smarty, ich zeig das hier mal auf damit du weißt das du etwas neu entwickelst auf einem ziemlich stressigen weg, was längst schon ( nicht nur in Smarty ) fertig ist. Unzwar so das es für den Enduser und der gesamten Sicherheit der Webseite entgegenkommt, da es - richtig konfiguriert - nicht möglich ist "richtiges" PHP auszuführen ( was bei dir ja der fall ist ).

Deins:
PHP-Code:
langer text  <? longtext("name"); ?>
richtext/wysiwyg-Editor  <? richtext("name"); ?>
bild  <? image("name""link""target""lightbox_true"); ?>
Smarty:
Code:
langer text {longtext "name"}
richtext/wysiwyg-Editor {richtext "name"}
bild {image "name" url="http://example.org/img.png" target="_blank" module="lightbox" }
allesamt user-defined template functions

Und nun dazu:
Zitat:
Zitat von rixo
so was jetzt noch fehlt, ist eine schleife, in der ich biliebig meine anderen functions platzieren kann.
Über einen "+"-Button, soll diese "Reihe" dann kopiert werden und die namen der jeweiligen um eine zahl erweitert werden.
also wird aus shorttext(name) shorttext(name_1row) oder so...
und dann über der jetzigen reihe eingefügt
Smarty:
Code:
{section name=itemContainer loop=$countofElements}
   {$current=$smarty.section.itemContainer.index}
   {shorttext name=$current} {uiObject "delete" element="name|cat:$current"}
{/section}
{$next=$current+1}
{uiObject "add" element=$next}
Bordmittel Smarty: section
user-defined template functions: shorttext, uiObject

Was mir irgendwie auffällt das deine "Administration" der seite irgendwo die grenze zwischen:

Dinge die der User benutzt um Content zu erstellen ( Content Publishing )

und

Dinge die der User benötigt um Content zu erstellen ( CMS Mechanik )

verwischt. Halte ich persönlich für schlecht.

Ich hab hier als beispiel mal Smarty benutzt und darzustellen das Grundlegende Template-Funktionen in solchen Template-Engines schon mehr als erprobt vorhanden sind. Egal was du wie vereinfachen willst kannst du in diesen Engines per eigener Template-Funktion sicher integrieren.

Dein Eingabe-Format ist aber dennoch weit weg von Einfach und eher eine "alternative Sprache zum zusammenbau von Templates".
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] schleife pausieren lassen um werte zu ändern DarkSun PHP Einsteiger 10 24.03.2011 16:48
[Erledigt] mysql query in Schleife? Bitte nicht wernersbacher PHP Einsteiger 2 08.03.2011 12:36
[Erledigt] Wieso While Schleife endlos? JackSparrow PHP Einsteiger 8 02.02.2011 22:33
[Erledigt] Schleife 2 auf Schleife 1 beziehen bei XML Abfrage ePole PHP Einsteiger 16 17.12.2010 09:58
fwrite() funktioniert nicht innerhalb einer Schleife hausmaus PHP Tipps 2010 4 26.04.2010 13:45
[Erledigt] foreach Schleife lord_icon PHP Tipps 2010 11 06.02.2010 01:15
Zufällig erstellte Werte einzeln aus einer Schleife holen atthex PHP Tipps 2009 3 04.01.2010 19:03
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
for Schleife -> unterbrechen, Befehl einfügen, fortsetzen PHP Tipps 2005-2 7 10.10.2005 21:05
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
versteh diese do-while schleife nicht PHP Tipps 2004 5 08.09.2004 16:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:55 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum