SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #21  
Alt 10.01.2011, 19:44:10
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Hi

Zitat:
sollte jemand über post oder get eine funktion aufrufen wollen
hmm wenn du nicht eval benutzt, wie sollte er das dann machen? Ich lern gern dazu.

Schonmal von array_walk gehört? Damit kannst du dein eigenwilliges Konstrukt
auch umsetzen...

Nur so ein Tip: Kauf dir PHP Ge-packt als minibuch das kann man mal durchblättern
und so einige noch unendeckte funktionen kennenlernen.

mfg

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #22  
Alt 10.01.2011, 20:10:39
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Arbeite mit Whitelists!!

PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);




function 
helau()
{
 echo 
"Helau !!";


class 
Klingel
{
  public function 
__invoke()
  {
      echo 
"Brriinngggg....";
  }
}



$arrayOfFunctions = array();

$arrayOfFunctions['tuwas']   = function(){echo 'ich tu was';};
$arrayOfFunctions['tunix']   = create_function('',"echo 'ich tu nix';");
$arrayOfFunctions['helau']   = 'helau';
$arrayOfFunctions['telefon'] = new Klingel;


if(!empty(
$_REQUEST['funktion']))
{
  if(isset(
$arrayOfFunctions[$_REQUEST['funktion']]))
  {
    
$arrayOfFunctions[$_REQUEST['funktion']]();
  }
}


echo 
'<hr>';
foreach(
$arrayOfFunctions as $name => $function)
{
  echo 
"<a href='?funktion=$name'>$name</a> <br>";
}


?>

Geändert von DokuLeseHemmung (10.01.2011 um 20:21:26 Uhr)
Mit Zitat antworten
  #23  
Alt 18.01.2011, 01:58:53
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Hiho ja viel zu tun gehabt in der letzten zeit.

Naja
Zitat:
hmm wenn du nicht eval benutzt, wie sollte er das dann machen? Ich lern gern dazu.
Naja wenn ich irgentwan (ich weiß eval = evil) eval brauchen sollte dan würde ich es gerne so verwenden können das codes nur aus einer bestimmten datenbank oder aus einer in einer whitelist aufgeführten datei kommen können sollte nun jemand aber die möglichkeit sehen oder finden meinen code zu manipulieren wird über diese funktion verhindert das er über get oder post solche code injections machen kann (hoffe ich zumindest)

Das schliest natürlich auch sessions und cookies ein die ich natürlich auch durch diese funktion laufen lasse.

@DokuLeseHemmung:

Ok ... also solch eine methode funktionen aufzurufen habe ich vorher noch nicht gesehen.

Kannst du dazu eventuell etwas genauer auskunft geben ?
Also besonders zu:

PHP-Code:
//wie genau kann eine unbenannte funktion funktionieren ?
$arrayOfFunctions['tuwas']   = function(){echo 'ich tu was';};

//und hier verstehe ich das es der aufruf der funktion ist aber wie funktioniert das mit der 
//oberen unbenannten funktion ?...
 
$arrayOfFunctions[$_REQUEST['funktion']](); 
Jo gut $_REQUEST hab ich grad begriffen ... wollte ich eigentlich ne frage zu stellen ...

LG
Und danke für eure hilfe.

R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.

Geändert von R4Zz0R (18.01.2011 um 02:02:23 Uhr) Grund: $_REQUEST['funktion'] wo war die deklaration ... AAAHHH in der url... ;)
Mit Zitat antworten
  #24  
Alt 18.01.2011, 02:35:37
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

PHP-Code:
$arrayOfFunctions['tuwas']   = function(){echo 'ich tu was';};
echo 
get_class($arrayOfFunctions['tuwas']); 
Das ist eine Lambda Funktion.
Und wie man sieht ist sie ein Object vom Type Closure.
Als wenn Closure die magische Methode __invoke implementieren würde...
PHP 5.3.X halt...
http://www.php.net/manual/en/functions.anonymous.php
Mit Zitat antworten
  #25  
Alt 18.01.2011, 03:20:52
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Nachtrag:
Wenn man auf den normalen Funktionsaufruf verzichtet, gibts noch mehr Alternativen.
PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE);




function 
helau()
{
 echo 
"Helau !!";


class 
Klingel
{
  public function 
__invoke()
  {
      echo 
"Brriinngggg....";
  }
  public function 
piep()
  {
      echo 
"Beeb beeb beeb ....";
  }
}

class 
Gong
{
  public static function 
dengel()
  {
      echo 
"Doooiinngg...";
  }
}



$arrayOfFunctions = array();

$arrayOfFunctions['tunix']     = create_function('',"echo 'ich tu nix';");
$arrayOfFunctions['helau']     = 'helau';
$arrayOfFunctions['telefon1']  = new Klingel;
$arrayOfFunctions['telefon2']  = array(new Klingel,'piep');
$arrayOfFunctions['gong2']     = array("Gong","dengel");
$arrayOfFunctions['gong1']     = "Gong::dengel";                 // php 5.3.X
$arrayOfFunctions['tuwas']     = function(){echo 'ich tu was';}; // php 5.3.X

$params = array();

if(!empty(
$_REQUEST['funktion']))
{
  if(isset(
$arrayOfFunctions[$_REQUEST['funktion']]))
  {
    
call_user_func_array($arrayOfFunctions[$_REQUEST['funktion']],$params);
    
// $arrayOfFunctions[$_REQUEST['funktion']](); // kann leider nicht alles
  
}
}


echo 
'<hr>';
foreach(
$arrayOfFunctions as $name => $function)
{
  echo 
"<a href='?funktion=$name'>$name</a> <br>";
}
Mit Zitat antworten
  #26  
Alt 18.01.2011, 14:16:33
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

OK... WOW :D
Jetzt bin ich ein wenig baff...

Ok abgesehen davon das ich eigentlich normale funktionsaufrufe nutze ist das eine interresante alternative. Nur sehe ich für mich keine besonderen vorteile dabei.
Welche vorteile siehst du dabei ? Um mir eventuell ein beispiel zu nennen.

Momentan arbeite ich folgendermaßen:

Controller:
Läd model template und filtert das erste mal alle get variablen(regex & mysql_real_escape_string ) und übergabe aller post und get variablen in eigenständigem array.

Model:
Läd inhalte der datenbanken und gibt einige arrays zurück das die informationen für die einzelnen inhalte ennthalten.(innerhalb der models werden funktionen aufgerufen die weitere filterungen {post,get,sessions,cookies} auf ihren typ und injections. )

Template:
Ruft die im model definierten funktionen auf und gibt die arrays im design der seite aus, sobald beendet gibt der controler die seite aus.

Damit bin ich bisher auch echt sehr zufrieden aber ob dabei nachteile entstehen kann ich jetzt nicht genau sagen dazu läuft es in meinen augen eigentlich recht gut und konfliktfrei.

Tipps wären nett.

LG
R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
  #27  
Alt 18.01.2011, 14:57:15
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Zitat:
Nur sehe ich für mich keine besonderen vorteile dabei.
Du wolltest Funktionsaufrufe per GET/POST übergeben!
Zitat:
Ganz einfach sollte jemand über post oder get eine funktion aufrufen wollen,
Warum du das tun willst ist mir schleierhaft!
Ich halte es sogar für eine dumme Idee.
Aber nichts desto Trotz habe ich dir mit meinem Code eine SICHERE Variante geliefert.
Mach damit was du willst.

Alles in allem scheinst du immer noch OOP zu verweigern.
Das kannst du auch tun....
Aber respektiere bitte, dass ich keine Lust habe mich dem anzuschließen. Oder überhaupt darüber nachzudenken, was denn jetzt der beste Weg sein könnte ein Prozedurales Framework zu basteln. Für mich ist das ganz offensichtlich ein Irrweg. Und Irrwege unterstütze ich nicht. OK, Sicherheitsfragen, ja, aber nicht den falschen Weg.

Bedenke:
Ich programmiere seit über 25 Jahren Objektorientiert!
Mir kommt das Prozedurale fast wie "Baby Brabbelsprache" vor.

Mal ein Beispiel für eine meiner typischen index.php Dateien, evtl. siehst du ja dann in etwa was ich meine..
(ich verwende die CODE Darstellung, weil der PHP Syntaxerleuchter mir die Backslashes da rausklaut)
Code:
<?php
error_reporting(-1);    
ini_set('display_errors', TRUE);
setlocale(LC_ALL,'de_DE@euro', 'de_DE',  'de', 'ge'); 
date_default_timezone_set('Europe/Berlin');     
 

require_once './lib/DLH/NamespaceAutoloader.php'; 
\DLH\NamespaceAutoloader::asSingleton()->setBaseNamespace();
\DLH\NamespaceAutoloader::asSingleton()->addNamespace('./Application');


$t = new \Application\Tests;
$t->run();
Fertig!
Das wars!
Diese index.php steuert ein recht großes Projekt.
Mit Zitat antworten
  #28  
Alt 18.01.2011, 15:23:39
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Hi

Zitat:
Ganz einfach sollte jemand über post oder get eine funktion aufrufen wollen,
mir is auch schleierhaft was das soll und es steht meine Frage noch im Raum
Zitat:
hmm wenn du nicht eval benutzt, wie sollte er das dann machen?
@Doku
Zitat:
Ich programmiere seit über 25 Jahren Objektorientiert!
ich glaub da bin ich von Basic zu Pascal ;)
Zitat:
Fertig!
Das wars!
Diese index.php steuert ein recht großes Projekt.
Ich hoffe du wolltest ihm aufzeigen wie "einfach" du Projekte mit
wenigen Zeilen Code starten kannst, weil vieles durch OOP halt
wiederverwendbar ist und nicht wie "kurz" dein Code ist.
Sonst leg ich einen drauf
PHP-Code:
<?php
require_once('apiStart.php');
?>
ätschh kürzer ;))

Ich denke R4Zz0R muss erst noch einige kleine Projekte machen
um zu sehen das sich alles wiederholt und sich dadurch eine wieder-
verwendbarkeit nicht ausschliessen lässt und die ist nunmal im OOP
zu finden.

mfg

CKaos

und nochmals der Tip:
Kauf dir PHP Ge-packt als minibuch das kann man mal durchblättern
und so einige noch unendeckte funktionen kennenlernen.
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #29  
Alt 18.01.2011, 15:56:12
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Zitat:
ich glaub da bin ich von Basic zu Pascal ;)
Basic habe ich übersprungen....

Eigentlich komme ich aus der "Steuern und Regeln" Ecke...

Assembler, erst Z80 und danach Intel 8086.
Mein erster Pascal Compiler lief auf dem Z80.

Pascal war aber nicht optimal für diese Zwecke, darum auch fix auf Forth umgestiegen. Und das habe ich mächtig aufgeblasen:
1. Multitasking eingebaut (das war zu DOS 3.1 Zeiten fast undenkbar)
2. OOP an Forth dran gerüstet (C++ gabs da noch nicht)
Ja, mit Forth geht das!
In Forth wird die Sprache solange modifiziert, bis sie das Problem optimal widerspiegelt.

Später gabs dann noch einige Desktop Applikationen und Dienste in Delphi....

Jetzt buddel ich recht viel in PHP rum....
Naja, ist keine besonders schöne Sprache, aber tuts und ist weit verbreitet.


Hier mal ein schönes Buch zu Forth:
Thinking Forth Von Leo Brodie
Das Lesen lohnt sich auch für Freunde anderer Sprachen, denn die Konzepte und Ideen sind weiterhin aktuell. Auch wenn dort "nur" die Rede von Modulen und Komponenten ist, hört man doch schon den OOP Ansatz läuten. Damals gabs halt noch kein allgemeingüliges OOP Vokabular.
Auch sind die Bildchen in dem Buch echt lustig...
Mit Zitat antworten
  #30  
Alt 18.01.2011, 17:18:10
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Framework ? ...

Uuups moment ich glaube wir haben ein kleines verständnisproblem..

gerade weil ich jeglichen aufruf von ausen verhindern will benutze ich gerade mit meiner funktion weil funktionsaufrufe damit einfach garnicht möglich sind.

Sollte das der fall sein das jemand von ausen versucht die funktionen auszuführen wird einfach alles entfernt so hoff ich halt das ich so wenig probleme wie möglich bekomm.

Lg
R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Framework = Sammlung von verschiedenen Funktionen? Erzengel PHP Entwicklung und Softwaredesign 9 06.04.2010 12:11:48
Ein Framework hmp PHP Entwicklung und Softwaredesign 19 04.04.2010 20:55:41
Suche: PHP Framework für Adminbereich ksticker PHP für Fortgeschrittene und Experten 0 16.08.2008 18:31:52
Zend Framewok Small-Talk PHP Entwicklung und Softwaredesign 2 04.04.2006 20:28:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:09:30 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.


© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt