php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.01.2012, 18:53  
Erfahrener Benutzer
 
Registriert seit: 28.09.2009
Beiträge: 242
PHP-Kenntnisse:
Anfänger
jwka61 befindet sich auf einem aufstrebenden Ast
Standard Gibt es Code-"Bricks" (Bündel von Codezeilen)?

Ich habe immer mal wieder Code, bei dem mehrere (meist ziemlich einfache wie 4-5 "echo xyz") Zeilen identisch sind, "drumrum" aber doch gehörig viel anders ist.

Nicht selten kommt das in "Switch" cases vor.

Frage: Gibt es sowas wie "Code-Bündel", die vorab definiert werden und dann mittels einer einzelnen Zeile abgerufen werden können?

Eine Funktion dafür zu basteln schin mir in den meisten Fällen mit Kanonen auf Spatzen geschossen.

Danke
jwka61
__________________
Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.
jwka61 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.01.2012, 18:54  
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

Zitat:
Zitat von jwka61 Beitrag anzeigen
Ich habe immer mal wieder Code, bei dem mehrere (meist ziemlich einfache wie 4-5 "echo xyz") Zeilen identisch sind, "drumrum" aber doch gehörig viel anders ist.

Nicht selten kommt das in "Switch" cases vor.

Frage: Gibt es sowas wie "Code-Bündel", die vorab definiert werden und dann mittels einer einzelnen Zeile abgerufen werden können?

Eine Funktion dafür zu basteln schin mir in den meisten Fällen mit Kanonen auf Spatzen geschossen.

Danke
jwka61
Closures
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 18.01.2012, 18:56  
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

3) Funktionen
2) Includes
1) OOP

Sieger: Verbesserung Deines Codes
__________________
--
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 18.01.2012, 21:15  
WilkeDevelop
Gast
 
Beiträge: n/a
Standard

was spricht gegen void-funktionen?
  Mit Zitat antworten
Alt 19.01.2012, 13:15  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Irgendwie hört sich das was du suchst genau nach Funktionen an. Die sind genau dafür gedacht ..
Flor1an ist offline   Mit Zitat antworten
Alt 19.01.2012, 13:40  
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

Naja, kommt drauf an. 1. bilden Funktionen natürlich einen eigenen Variablenscope. 2. kann eine Funktion (auch keine andere Methode) nicht bspw. den Innenteil eines switch auslagern. Ein bisschen hört es sich an, als sei das die Anforderung.
__________________
--
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 19.01.2012, 14:39  
Erfahrener Benutzer
 
Registriert seit: 28.09.2009
Beiträge: 242
PHP-Kenntnisse:
Anfänger
jwka61 befindet sich auf einem aufstrebenden Ast
Standard

Es geht generell darum:

In den Case Zweigen eines (z.B. 20-fach) Switch-Konstruktes sind wenige, für den Case individuelle Anweisungen, zwischen die ein paar gleichartige Anweisungen kommen, die aber auf den Ergebnissen der individuellen Anweisungen basieren.

Die gleichartigen Anweisungen machen nun das Switch- Konstrukt nur "unnötig" lang.

Beispiel:

PHP-Code:
Switch( $result )
{
    case 
$res01:
        <
individual code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
individual code>;
    break;
    case 
$res02:
        <
individual code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
individual code>;
    break;
    case 
$res03:
        <
individual code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
individual code>;
    break;
    case 
$res04:
        <
individual code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
common code>;
        <
individual code>;
    break;
    default:
        echo 
"nonsense \n";

Natürlich wäre statt der 4 Zeilen <common code> eine Funktion möglich. Aber, wie Nikosch schon feststellte, müssen dann eben die Daten übergeben werden etc. das wäre nicht so problematisch, eher problematisch ist, dass die <common code> zeilen in verschiedene Variablen/Arrays schreiben.

Damit wäre der Overhead für eine Funktion größer ale der Nutzen ...

Meine Frage war, ob man daraus sowas machen kann:

PHP-Code:

defbrick
{    <common code>;
        <
common code>;
        <
common code>;
        <
common code>;
}

Switch( 
$result )
{
    case 
$res01:
        <
individual code>;
        <
BRICK>;
        <
individual code>;
    break;
    case 
$res02:
        <
individual code>;
        <
BRICK>;
        <
individual code>;
    break;
    case 
$res03:
        <
individual code>;
        <
BRICK>;
        <
individual code>;
    break;
    case 
$res04:
        <
individual code>;
        <
BRICK>;
        <
individual code>;
    break;
    default:
        echo 
"nonsense \n";

Scheint's nicht zu geben und braucht die Welt wohl auch nicht. ok. Hätt ja können sein ...

@WilkeDevelop: das mit den void Funktionen hab ich noch nicht so ganz kapiert. Was meinst Du damit? Keine Rückgabe? Keine Argumente?

Thx all.

[EDIT]
Eine Lösung wäre natürlich, den "Brick" in eine Variable zu schreiben und die per eval() abarbeiten zu lassen. hmmm. da wird ja vor gewarnt ...
[/EDIT]
__________________
Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

Geändert von jwka61 (19.01.2012 um 14:44 Uhr).
jwka61 ist offline   Mit Zitat antworten
Alt 19.01.2012, 14:47  
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

Kannst natürlich auch einfach GOTO nutzen. Gibts ja auch.

oder:
PHP-Code:
Switch( $result )
{
    case 
$res01:
        <
individual code>;
    break;
    case 
$res02:
        <
individual code>;
    break;
    case 
$res03:
        <
individual code>;
    break;
    case 
$res04:
        <
individual code>;
    break;
    default:
        echo 
"nonsense \n";
        return;
}

<
common code>;
<
common code>;
<
common code>;
<
common code>;

Switch( 
$result )
{
    case 
$res01:
        <
individual code>;
    break;
    case 
$res02:
        <
individual code>;
    break;
    case 
$res03:
        <
individual code>;
    break;
    case 
$res04:
        <
individual code>;
    break;

__________________
--
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 19.01.2012, 15:22  
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

Zitat:
Zitat von jwka61 Beitrag anzeigen
[EDIT]
Eine Lösung wäre natürlich, den "Brick" in eine Variable zu schreiben und die per eval() abarbeiten zu lassen. hmmm. da wird ja vor gewarnt ...
[/EDIT]
PHP-Code:
$brick = function () {
   echo 
'repeating this here<br />';
};

echo 
'la<br/>';

$brick();

echo 
'le<br/>';

$brick();

echo 
'lu<br/>'
Closures. ( oder auch Lambda(-s/-fuktionen)... )
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (19.01.2012 um 15:48 Uhr).
tr0y ist offline   Mit Zitat antworten
Alt 19.01.2012, 18:29  
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:
Natürlich wäre statt der 4 Zeilen <common code> eine Funktion möglich. Aber, wie Nikosch schon feststellte, müssen dann eben die Daten übergeben werden etc. das wäre nicht so problematisch, eher problematisch ist, dass die <common code> zeilen in verschiedene Variablen/Arrays schreiben.
__________________
--
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
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] Seite Lädt mit PHP Code nicht xerox PHP Einsteiger 6 05.11.2011 19:35
JAvascript und Php - code funktioniert nicht Black-Devil JavaScript, Ajax und mehr 1 01.08.2008 15:01
Probleme mit PHP Code HappyDieMuschel PHP Tipps 2008 7 28.05.2008 06:34
[Erledigt] PHP Code aus Datenbank ayti PHP Tipps 2008 8 26.05.2008 19:40
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Nur bestimmten Html Code zulassen? litterauspirna PHP Tipps 2008 5 29.04.2008 12:30
Datei einfügen aus Ausgabepuffer, damit PHP Code funktionier NetLook PHP Tipps 2006 17 25.10.2006 15:09
FiFo macht Probs beim Css Code Matthiasnet HTML, Usability und Barrierefreiheit 10 18.08.2006 13:14
PHP: Wie parst der Server den Code am schnellsten? SvenLittkowski PHP Tipps 2007 4 17.12.2005 10:58
bb code in htm code wandeln janni PHP Tipps 2007 2 04.11.2005 22:36
[Erledigt] JS Code in PHP Code?? HTML, Usability und Barrierefreiheit 12 08.08.2005 15:45
Seite 1/2/3..Code was haltet ihr davon? Matthiasnet PHP Tipps 2005-2 4 29.07.2005 20:29
[Erledigt] Lesbarkeit von Code Off-Topic Diskussionen 6 14.07.2005 14:48
code aus db mit eval replacen chief-thomson PHP Tipps 2005-2 4 08.07.2005 15:33
Problem mit COde PHP Tipps 2004 5 28.08.2004 16:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:58 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