php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.02.2010, 16:48  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard Call to a member function on a non-object

Beim untenstehenden Code erhalte ich an Stelle X
Code:
Fatal error: Call to a member function assign() on a non-object
parseObjectToArray bekommt offensichtlich kein Objekt übergeben.
Ich habe doch aber ein Model-Objekt erzeugt.
Ist das schon wieder so ein nerviges Scope-Problem?
Ich denke, das ließe sich lösen, indem ich das Model-Objekt an die Fill-Methode übergebe. Das will ich aber nicht machen. Wozu habe ich denn sonst das Modell-Object erzeugt, das alle Variablen enthält...
Warum kann ich das Model-Objekt nicht mit $this ansprechen?

PHP-Code:
$tpl = new Template;
$model = new Model;
$model->id '1';
//...
$model->Fill();

class 
Model
{

    public 
$id 0;
    
//...

    
public function Fill(){
        global 
$tpl;
        
$tpl->assign("model"Arr::parseObjectToArray($this)); //Stelle X
    
}
}

class 
Arr
{
    public static function 
parseObjectToArray($object) {
       
$array = array();
       if (
is_object($object)) {
          
$array get_object_vars($object);
       }
       return 
$array;
    }
}

class 
Template
{
    public function 
assign()
    {
        
//...
    
}

chunky ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.02.2010, 17:02  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von chunky Beitrag anzeigen
parseObjectToArray bekommt offensichtlich kein Objekt übergeben.
NÖ.
$tpl ist nicht gesetzt oder da steht irgendwas anderes als ein Objekt drin.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 03.02.2010, 17:14  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard

Warum ist $tpl nicht gesetzt? Ich hab's doch global gemacht?
chunky ist offline  
Alt 03.02.2010, 17:23  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Die Frage kann ich dir nicht beantworten. Vielleicht ist es gesetzt aber es steht kein Objekt drin. Ein var_dump hilft eventuell weiter.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 03.02.2010, 18:31  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für den Hinweis. $tpl ist in der Tat null an Stelle "X".
Vor dem Aufruf von $model->Fill() ist das Objekt jedoch vorhanden.

Warum funcktioniert das "global $tpl;" denn nicht?
Und was wäre die beste Lösung für das Problem?
chunky ist offline  
Alt 03.02.2010, 18:44  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Keine Ahnung, warum das nicht funktioniert. Entweder überschreibst du das explizit oder du hast die PHP innerhalb einer Funktion per Include eingebunden. Es gibt viele Möglichkeiten dafür.
Die bessere Lösung des Problems ist, keinerlei globale Variablen zu verwenden und stattdessen das Singleton- oder Registry-Pattern. Was das ist, fragst du am besten Google.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 03.02.2010, 19:06  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard

Okay, danke. Ich werde mir das anschauen.
Danke für die Antwort.
chunky ist offline  
Alt 03.02.2010, 21:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
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

Globals und OOP sind zwei Konzepte, die nicht zusammen gehören.
__________________
--
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  
Alt 03.02.2010, 21:59  
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 übergibst du $tpl denn nicht einfach an Fill()?

PHP-Code:
<?php
$tpl 
= new Template;
$model = new Model;
$model->id '1';
//...
$model->Fill($tpl);

class 
Model
{

    public 
$id 0;
    
//...

    
public function Fill(Template $tpl){
        
$tpl->assign("model"Arr::parseObjectToArray($this)); //Stelle X
    
}
}
// ...
?>
Chriz ist offline  
Alt 04.02.2010, 03:01  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard

Ja, das wäre, wie ich im ersten Post erwähnt habe, eine Möglichkeit.
Ich benutze jetzt die Registry-Klasse von Zend dafür.
chunky 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
JS-Kalender funktioniert nicht im IE8 ToxicToast JavaScript, Ajax und mehr 4 18.11.2009 16:26
variable mit onclick an php drombusch PHP Tipps 2009 8 30.08.2009 14:45
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
[Erledigt] Fatal error: Call to a member function assign() on a non-object in ... Cheesy PHP Tipps 2008 11 08.10.2008 14:16
Call to a member function sQuery() on a non-object pappacoretex PHP-Fortgeschrittene 11 22.09.2008 17:23
Fehlermeldung : Call to a member function foo() on a non-object Mark Taylor PHP Tipps 2008 4 14.09.2008 20:38
Call to a member function on a non-object campinge PHP Tipps 2008 1 18.08.2008 02:31
Call to a member function ... on a non-object funnx PHP Tipps 2008 6 29.07.2008 18:08
Fatal error: Call to a member function on a non-object atom-dragon PHP Tipps 2007 20 02.12.2007 22:22
Call to a member function on a non-object Riks PHP Tipps 2007 20 10.02.2007 22:59
Problem Call to a member function on a non-object PHP Tipps 2005 5 24.05.2005 19:14
Fatal error: Call to a member function on a non-object PHP Tipps 2005 7 13.04.2005 07:24
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
Fatal error: Call to a member function on a non-object PHP Tipps 2005 15 04.02.2005 13:02
Call to a member function on a non-object --&amp;gt; WARUM ? PHP Tipps 2004-2 4 25.11.2004 20:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
call to a member function on a non-object, call to a member function on a non-object in, call to a member function assign() on a non-object, call to a member function assign(), call to a member function on a non-object php, call to a member function assign() on a non-object in, fatal error: call to a member function assign() on a non-object in, php call to a member function on a non-object, call to a member function, call a member function on a non-object, call to a member function on a non object, call to a member functionon a non-object, call to a member function on a non-object in php, php member function result_array() on a non-object, zend call to a member function search() on a non-object, was heisst call to a member function on a non-object in, memberfunction on a non object, call to a member function result_array() on a non-object, php fatal error: call to a member function on a non-object, call to a member function on an non object

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