2014-01-12 68 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(); 
     } 
    } 
相關問題