php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2011, 22:06  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard Php 5.4

Ich muss schon sagen, PHP 5.4 + Traits gefällt mir. Ich weiß zwar nicht ob das so im Sinne des Erfinders war, aber lassen sich echt schöne Sachen mit machen:

PHP-Code:
<?php
trait TFilterString
{
    protected function 
_filterString($variable$maxLength$nullable)
    {
        
$variableFiltered = (string)$variable;
        if (
$maxLength 0) {
            
$variableFiltered mb_substr($variableFiltered0$maxLength);
        }
        if (
$nullable && $variableFiltered === "" && $variableFiltered !== $variable) {
            
$variableFiltered null;
        }
        return 
$variableFiltered;
    }
}

trait TPropertyName
{
    use 
TFilterString;
    
    protected 
$_name;
    
    public function 
setName($name)
    {
        
$this->_name $this->_filterString($name5true);
    }
    
    public function 
getName()
    {
        return 
$this->_name;
    }
    
    public function 
hasName()
    {
        return 
$this->_name !== null;
    }
}

trait TSingleton
{
    public static function 
getInstance()
    {
        static 
$instance;
        if (
$instance === null) {
            
$instance = new static();
        }
        return 
$instance;
    }
}

class 
Test
{
    use 
TSingleton;
    use 
TPropertyName;
}


Test::getInstance()->setName(123456);
var_dump(Test::getInstance()->getName());
*thumbs-up*

Gibt's mit EasyPHP schon integriert im Apache, da spart man sich das Gefrickel:
http://www.easyphp.org/download.php
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.10.2011, 22:20  
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

Schon elegant. Macht die Analyse ohne gute Dokumentation allerdings auch enorm kleinteilig.
__________________
--
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 21.10.2011, 01:03  
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

Auf der anderen Seite kannst du richtig viele Dinge auslagern. Grad dieses ganze Überprüfe von Variablen oder Standard-Pattern (Singleton z.B. aber auch viele mehr). Mal sehn wie das in den großen Frameworks so eingesetzt wird.
Flor1an ist offline   Mit Zitat antworten
Alt 21.10.2011, 01:08  
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:
trait TSingleton
{
public static function getInstance()
{
static $instance;
if ($instance === null) {
$instance = new static();
}
return $instance;
}
}
Kann man die Property hier eigentlich auch an die Klasse binden? Ich staune ja fast, dass das so funktioniert. Ich dachte immer, static (function) Variablen teilen sich den speicher bei jedem Aufruf, auch über Instanzen hinweg?

[edit]

Hm, ist wohl nur bei Objekten so.

PHP-Code:
<?php

class foo
  
{
  function 
bar ()
    {
    static 
$baz 0;
    echo ++
$baz;
    }
  }
  
$a = new foo;
$a->bar ();

$b = new foo;
$b->bar (); // 12


class bar
  
{
  static function 
foo ()
    {
    static 
$baz 0;
    echo ++
$baz;
    }
  }

class 
barbar extends bar
  
{
  }
  
bar::foo ();
barbar::foo ();
bar::foo ();
barbar::foo (); //1122
__________________
--
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 22.10.2011, 12:15  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Ich dachte immer, static (function) Variablen teilen sich den speicher bei jedem Aufruf, auch über Instanzen hinweg?
Naja, das sind ja auch "nur" Templates wie z.B. aus C bekannt, die du vor dem Compile in die Klasse einbindest.

Meiner Meinung nach läd das aus OO-Sicht brutal zum Frickeln ein, da Funktionaliäten wild über Objekte verteilt wird. single-layer-MVC mit ihrem Helper-Konzept gewinnt dabei beispielsweise wieder an Bedeutung obwohl dies nicht einer sauberen "code separation" vereinbar ist.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 22.10.2011, 14:13  
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

Stimmt schon. Viele meiner Implementierungen, die ich aus OO-Sicht eher inkonsistent betrachte, ließen sich mit traits super lösen
__________________
--
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 22.10.2011, 14:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Meiner Meinung nach läd das aus OO-Sicht brutal zum Frickeln ein, da Funktionaliäten wild über Objekte verteilt wird.
Was vorher aber an mehreren Stellen im Code gemacht wurde, wir jetzt eben sauber an einer Stelle abgelegt. Sicherlich kann es dazu einladen, dass eine Klasse frei von Funktionalität ist, weil jemand meint alles auslagern zu müssen, aber die Idee gefällt mir trotz allem.

Zitat:
Zitat von dr.e. Beitrag anzeigen
single-layer-MVC mit ihrem Helper-Konzept gewinnt dabei beispielsweise wieder an Bedeutung obwohl dies nicht einer sauberen "code separation" vereinbar ist.
Wie meinst du das? Hast du ein Beispiel?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 22.10.2011, 18:13  
Erfahrener Benutzer
 
Registriert seit: 20.01.2010
Beiträge: 108
PHP-Kenntnisse:
Fortgeschritten
feeela befindet sich auf einem aufstrebenden Ast
Standard

Gab's nicht mal die Regel, dass sobald etwas drei mal oder häufiger verwendet wird, sowieso ausgelagert werden sollte? Das lädt so herum tatsächlich sehr zum rumfrickeln ein und bald schreiben wieder alle möglichst unverständlichen Quellcode…

BTW: eigenartiges Beispiel zum Singleton-Pattern, denn eine getInstance()-Methode allein macht noch kein Singleton-Pattern. Da braucht es noch einen privaten Konstruktor und eine private __clone()-Methode.
__________________
Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - Karlheinz Deschner

Geändert von feeela (22.10.2011 um 18:17 Uhr).
feeela ist offline   Mit Zitat antworten
Alt 22.10.2011, 18:54  
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, ist halt ein ST via Konvention. Ist schon ok so.
__________________
--
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 22.10.2011, 20:15  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

War doch nur ein Beispiel. Ich halte eh nix von Singleton.
__________________
"Nuschel ich?" - "Was?"
Chriz 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php 5.4, php 5.4 mvc, php traits tutorial, php/fi, php.de trait singleton, php trait constructor, php protected traits, php \5.4\, php 5.4 traits

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