php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.09.2009, 13:18  
Neuer Benutzer
 
Benutzerbild von babyNeo
 
Registriert seit: 29.08.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
babyNeo befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Class Constructor mit Dynamischen Argumenten

Hallo,

ich versuche derzeit Testweise einen Constructor einer Klasse mit dynamischen Argumenten auszuführen. Nun meine Frage ist sowas überhaupt machbar?
Ich maine damit etwa sowas wie "call_user_func_array" oder so.

PHP-Code:
<?php

class test {
  public function 
__construct() {
    echo 
count(func_num_args());
  }
}

function 
func() {
  
$OBJ = new call_user_func_array(func_get_args());
}

func("Test"nulltrue);

?>
babyNeo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.09.2009, 13:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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

Was spricht gegen eine Init-Methode, die vom Konstruktor aufgerufen wird?
ungetestet:

PHP-Code:
class test {
  public function 
__construct () {
    if (
!= func_num_args ()) {
      
call_user_func_array (array ($this 'init') , func_get_args ());
    }
  }

  public function 
init () {
    
// whatever;
  
}
}

function 
func ($class) {
  
$params func_get_args ();
  
$OBJ = new array_shift ($params);
  
call_user_func_array (array ($OBJ 'init') , $params);
}

func("Test"nulltrue); 
PHP-Code:
count(func_num_args()); 
ist übrigens „doppelt gemoppelt“.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (01.09.2009 um 13:30 Uhr).
nikosch ist gerade online  
Alt 01.09.2009, 13:39  
Neuer Benutzer
 
Benutzerbild von babyNeo
 
Registriert seit: 29.08.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
babyNeo befindet sich auf einem aufstrebenden Ast
Standard

Wegen den Dopelten stimmt. Sorry. Aber ich meine eigentlich ehr sowas wie das ich ein Object einer xyz klasse mit einer Funktion erzeuge der ich dann parameter übergeben kann und dieser werden sauber an den constructor übergeben.

PHP-Code:

function createObject($ClassName) {
  return new 
$ClassName(func_get_args());

Nur das ich halt ein array wo die parameter drin sind blöde find und es schöner fänd wenn man diese ein zu ein weiter reichen kann.
babyNeo ist offline  
Alt 01.09.2009, 14:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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

Ist bei mit genau das selbe Prinzip. Direkt mit new gehts eben nicht.
__________________
--
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 gerade online  
Alt 01.09.2009, 14:13  
Neuer Benutzer
 
Benutzerbild von babyNeo
 
Registriert seit: 29.08.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
babyNeo befindet sich auf einem aufstrebenden Ast
Standard

Jo scheinbar nicht. Schade. Währe halt sehr schön gewesen wenn es dort etwas gegeben hätte.
babyNeo ist offline  
Alt 01.09.2009, 14:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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

new ist eben ein Sprachkonstrukt, keine Methode.
__________________
--
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 gerade online  
Alt 01.09.2009, 14:35  
Neuer Benutzer
 
Benutzerbild von babyNeo
 
Registriert seit: 29.08.2009
Beiträge: 13
PHP-Kenntnisse:
Anfänger
babyNeo befindet sich auf einem aufstrebenden Ast
Standard

Hab halt gedacht man kann da irgend etwas machen damit das direkt möglich ist. Aber ok danke für deine Infos
babyNeo ist offline  
Alt 01.09.2009, 15:13  
Erfahrener Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 223
PHP-Kenntnisse:
Fortgeschritten
Tiberius zeigte ein beschämendes Verhalten in der Vergangenheit
Tiberius eine Nachricht über ICQ schicken
Standard

PHP-Code:
<?php

class test {
  public function 
__construct() {
    echo 
count(func_num_args());
  }
}

function 
func() {

  
$arrArgs  func_get_args();
  
$strClass array_shift($arrArgs);

  if(
class_exists($strClass))
  {
    
$objClass = new ReflectionClass($strClass);

    if(
$objClass->isInstantiable())
    {
      return 
$objClass->newInstanceArgs($arrArgs);
    }
  }
  return 
null;
}

func("Test"nulltrue);

?>
Dürfte sich um ein Factory Pattern handeln
Tiberius ist offline  
Alt 01.09.2009, 15:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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, Reflections gingen auch. Obwohl ich das fast so unelegant finde wie ne eval-Lösung.
__________________
--
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 gerade online  
Alt 01.09.2009, 15:40  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
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

Warum willst du überhaupt eine variable Anzahl an Parametern für den Konstruktor festlegen?
Dem Konstruktor solltest du die Parameter übergeben, die für die Existenz des Objekts erforderlich sind, bei einer DB-Klasse also die Verbindungsdaten. Für den Rest gibt es doch setter-Methoden.
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
 


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] Datenbank Class Shuyio88 PHP Tipps 2009 2 02.03.2009 19:47
Class Vars fmueller PHP Tipps 2006 10 14.02.2006 19:54
[OS|FreeGW] Class Problem ( cl_extended_database ) PHP Tipps 2006 20 08.02.2006 01:09
Mehrere Div-Layer per Class schliessen Diego1978 HTML, Usability und Barrierefreiheit 4 02.12.2005 12:10
PHP Class Datei Basirende Datenbank mit MySQL Syntax atom-dragon Beitragsarchiv 4 01.08.2005 06:57
Thema: class; Problem: Grundlegende :) PHP Tipps 2005-2 4 13.07.2005 18:40
bb stringparser class search Beitragsarchiv 4 14.04.2005 18:18
Class -- Funktion Creativ PHP Tipps 2005 2 30.03.2005 23:10
a mouseover class ändern 022.9 HTML, Usability und Barrierefreiheit 4 18.02.2005 15:51
Klassenschachtelung -&amp;gt; Cannot Redeclare Class ... Fehler PHP-Fortgeschrittene 5 21.10.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php class constructor, http://www.php.de/php-einsteiger/58639-erledigt-class-constructor-mit-dynamischen-argumenten.html, class constructor, class constructor übergabe, php class argumente, class new mit argumenten, php konstruktor variable übergeben, call_user_fnc_array fnc_get_args, php konstruktor parameter, php klasse laden mit dynamische anzahl von parametern, php __construct dynamisch, class constructor php, class_constructor und constructor, __construct anfänger, constructor php \function init\, call_user_func_array, php rückgabe konstruktor, php _construct, constructor php, konstruktor mit parameter php

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