2014-01-12 72 views
1

系统在最后一次给我提供了一个错误。 $ nomeportefolio上的未定义变量。调用在非对象上执行成员函数(addideasportefolio)。 如果我将这2行移动到if更改函数变量之前的if,它可以工作,但是我最后需要它!有人可以帮忙吗?PHP未定义的变量/调用在非对象上执行成员函数

<?php 

include ("Ideia.php"); 

$handle = @fopen("C:\Users\Bia\Desktop\Projecto ES/input.txt", "r"); 

if ($handle) { 
    $booleanuser = FALSE; 
    while (!feof($handle)) { 
     $buffer = fgets($handle, 4096); 
     $partial = substr($buffer, 0, 4); 
     $nomeuser; 
     $iduser; 
     $saldo = substr($buffer, 0, 5); 
     $portefolio = substr($buffer, 0, 9); 
     $nomeportefolio; 


     if ($partial == "user") { 
      $booleanuser = TRUE; 
      $nomeuser=substr($buffer, 0, 5); 
      $iduser=substr($buffer, 4, 1); 
      $nomeuser = new User($iduser); 
     } 

     if ($booleanuser == FALSE) { 
      if ($partial == "idea") { 
       $nomeideia=substr($buffer, 0, 5); 
       $idideia=substr($buffer, 4, 1); 
       $nomeideia = new Ideia($idideia); 
      } 
     } 

     if ($saldo == "Saldo"){ 
      $nomeuser->addsaldo(substr($buffer, 7)); 
      echo $nomeuser->greetuser();  
     } 

     if ($portefolio == "Portfolio"){ 
      $nomeportefolio="portefolio".$iduser; 
      $nomeportefolio = new Portefolio($iduser,$iduser); 

     } 
     if ($partial == "idea"){ 
      $nomeportefolio->addideiasportefolio($iduser,$iduser); 
      //função que mostra os ids das ideias no portefólio 
      echo $nomeportefolio->mostraportefolio(); 
     } 


    } 
    fclose($handle); 
} 
+0

什么是'$ nomeportefolio =“portefolio”的地步。 $ iduser;',因为你覆盖它? – PHPglue

回答

0

错误Call to a member function on a non-object意味着你要使用的功能上的变量不是一个对象。

在这种情况下,$nomeportefolio->addideiasportefolio($iduser,$iduser);

为什么是怎么回事?很简单,你设置$nomeportefolioPortefolio类的实例只在代码的以下部分:

if ($portefolio == "Portfolio"){ 
     $nomeportefolio="portefolio".$iduser; 
     $nomeportefolio = new Portefolio($iduser,$iduser); 

    } 

等于“投资组合”,但$partial等于如果$portefolio是什么“主意”

简单:P它试图调用该函数->addideiasportefolio()$nomeportefolio这是因为if($portefolio == "portfolio")没有执行非对象;)

0

您在if语句中设置了$nomeportefolio。正弦if ($partial == "idea")有条件* 调用$nomeportefolio但没有设置它,你运行的风险是在某个地方在$portefolio !== "Portfolio"还没有设置。你需要做的就是把“想法”如果语句检查组合中:

if ($portefolio == "Portfolio"){ 
     $nomeportefolio="portefolio".$iduser; 
     $nomeportefolio = new Portefolio($iduser,$iduser); 

     if ($partial == "idea"){ 
      $nomeportefolio->addideiasportefolio($iduser,$iduser); 
      //função que mostra os ids das ideias no portefólio 
      echo $nomeportefolio->mostraportefolio(); 
     } 
    } 
相关问题