php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.07.2007, 21:14  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard instanz einer classe (variable)

hallo, nochmal ein problem mit classen undzwar:

PHP-Code:
class classHandle
{
    function 
__construct($class,$handle=0)
    {
    
$this->handle $handle;
    
$this->className[$handle] = $class;
    
$this->path[$this->handle] = dirname(__FILE__)."\..\classes\\".$class."\\".$class.".php";
    }
    
    function 
load($handle=0)
    {
        if(
file_exists($this->path[$handle]))
        {        include_once(
$this->path[$handle]); 
        
$this->tempClass[$handle] = new $this->className;    # <<<< fehlerzeile
        
return true;        }
        else
        {        return 
false;        }

    }
    
    function 
getVar($str,$handle=0)
    {
    return 
$this->path[$handle];
    }
    
    function 
useIn($function,$handle=0)
    {
    if(!
$this->tempClass[$handle]) { return false; }
    return 
$this->tempClass[$handle]->$function();
    }

fehler
Code:
Fatal error: Class name must be a valid object or a string in D:\host\xampp\htdocs\yahs\core\function.php on line 224
die datei existiert und wird geincludet.
notyyy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.07.2007, 22:25  
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

In deinem Konstruktor wird className als Array gesetzt.
nikosch ist gerade online  
Alt 13.07.2007, 22:59  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

hm, ich habe gehofft das geht als array wegen der $handle
notyyy ist offline  
Alt 13.07.2007, 23:02  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

$this->tempClass_$handle = new $this->className;



geht auch nicht....

PHP-Code:
Parse errorsyntax errorunexpected T_VARIABLE in D:hostxampphtdocsyahscorefunction.php on line 224 
notyyy ist offline  
Alt 13.07.2007, 23: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

Nicht gleich anfangen zu raten!
new $this->className in der Fehlerzeile benötigt wohl einen Array-Index
nikosch ist gerade online  
Alt 14.07.2007, 00:46  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

$this->tempClass_$handle = new $this->className[$handle];

änder nix, nochmal alles:



PHP-Code:
class classHandle
{
    function 
__construct($class,$handle=0)
    {
    
$this->handle $handle;
    
$this->className[$handle] = $class;
    
$this->path[$this->handle] = dirname(__FILE__)."\..\classes\\".$class."\\".$class.".php";
    }
    
    function 
load($handle=0)
    {
        if(
file_exists($this->path[$handle]))
        {        include_once(
$this->path[$handle]); 
        
$this->tempClass_$handle = new $this->className[$handle];
        return 
true;        }
        else
        {        return 
false;        }

    }
    
    function 
getVar($str,$handle=0)
    {
    return 
$this->path[$handle];
    }
    
    function 
useIn($function,$handle=0)
    {
    if(!
$this->tempClass_$handle) { return false; }
    return 
$this->tempClass_$handle->$function();
    }

notyyy ist offline  
Alt 14.07.2007, 22:04  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

keiner ne idee?, ich will on the tly eine instanz einer classe erzeugen und diese dann über eine andere classe steuern.... geht das überhaupt so wie ich vor hatte?
notyyy ist offline  
Alt 14.07.2007, 22:15  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

return $this->tempClass_$handle->$function();
Was ist das denn?
Zergling-new ist offline  
Alt 14.07.2007, 22:44  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
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:
Zitat von notyyy
keiner ne idee?, ich will on the tly eine instanz einer classe erzeugen und diese dann über eine andere classe steuern.... geht das überhaupt so wie ich vor hatte?
Irgendwie sind in letzter Zeit einige Vollmondnächte über Deutschland gezogen...

Was du vor hast, klingt wie ein verkapptes Factory- oder ein Builder-Pattern. Lies mal http://www.phpbar.de/w/Factory_Method durch, dann wirst du sehen, dass dieses Pattern dir sicher weiterhelfen wird.
__________________
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  
Alt 14.07.2007, 23:10  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Abgesehen davon, dass dir der Link von Dr.E. helfen wird, meinstest du evtl. so etwas:
classHandle.php
PHP-Code:
<?php
class classHandle
{
    public 
$handle;
    public 
$className;
    public 
$path;
    public 
$tempClass_;
    
    function 
__construct($class,$handle=0)
    {
        
$this->handle $handle;
        
$this->className $class;
        
$this->path dirname(__FILE__)."\classes\\".$class."\\".$class.".php"# ANPASSEN
        
        
$this->load();
    }
    
    function 
load()
    {
        if(
file_exists($this->path))
        {
            include_once(
$this->path);
            
$this->tempClass_ = new $this->className;
            return 
true;
        }else{
                return 
false;
        }

    }
    
    function 
getVar($str)
    {        
        if(!
$this->tempClass_)
        {
            return 
false;
        }else{
            return 
$this->tempClass_->$str;
        }
    }
    
    function 
useIn($fName,$handle=0)
    {
        if(!
$this->tempClass_)
        {
            return 
false;
        }else{        
            return 
$this->tempClass_->$fName();
        }
    }
}
?>
index.php
PHP-Code:
<?
$test 
= new classHandle('testKlasse');

echo 
'<pre>';
var_dump($test->getVar('tag'));
echo 
'</pre>';

echo 
'<pre>';
var_dump($test->useIn('getTag'));
echo 
'</pre>';
?>
classes/testKlasse/testKlasse.php
PHP-Code:
<?
class testKlasse
{
    public 
$tag;
    
    function 
__construct()
    {
        
$this->tag date('D');
    }
    
    function 
getTag()
    {
        return 
$this->tag;
    }
}
?>
Ein Aufruf von index.php liefert:
Code:
string(3) "Sat"

string(3) "Sat"
(Ich hab einfach mal rumprobiert )
phpdummi ist offline  
 


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
Variable in Datenbankentrag asa PHP Tipps 2008 11 22.07.2008 09:51
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
variable wird nich erkannt. Marian PHP Tipps 2006 1 03.04.2006 21:25
PHPMailer findet eigene Variable net seejay PHP Tipps 2007 6 04.01.2006 12:55
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
[Erledigt] Variable wird nicht erkannt bzw ausgegeben. PHP Tipps 2005-2 4 25.10.2005 18:54
Variable als Variable behandeln ohne den Wert zu verwenden Pain-maker PHP Tipps 2005-2 4 11.09.2005 17:28
Variable in Objekt php1 HTML, Usability und Barrierefreiheit 2 25.06.2005 08:08
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
[Erledigt] $_SESSION verwandelt variable auf einem Server in ein Array PHP-Fortgeschrittene 2 16.12.2004 13:25
[Erledigt] Variable erst später definieren? PHP Tipps 2004-2 10 04.12.2004 20:23
2 Schleifen durchlaufen PHP Tipps 2004 1 14.09.2004 14:33


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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.