PHP未定义变量/调用非对象上的成员函数
系统在最后一个if上给了我一个错误。$nomeportefolio上未定义的变量。在非对象上调用do成员函数()addedesortefolio。 如果我在改变函数变量之前将这两行移到If,它会起作用,但我需要在最后一个If上使用它!有人能帮忙吗PHP未定义变量/调用非对象上的成员函数,php,function,class,undefined,Php,Function,Class,Undefined,系统在最后一个if上给了我一个错误。$nomeportefolio上未定义的变量。在非对象上调用do成员函数()addedesortefolio。 如果我在改变函数变量之前将这两行移到If,它会起作用,但我需要在最后一个If上使用它!有人能帮忙吗 <?php include ("Ideia.php"); $handle = @fopen("C:\Users\Bia\Desktop\Projecto ES/input.txt", "r"); if ($handle) {
<?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);
}
您正在if语句中设置$nomeportefolio
。如果($partial==“idea”)
conditional*调用$nomeportfolio
但没有设置它,您就有可能处于$portfolio!==“公文包”
尚未设置。您需要做的是将“想法”检查放入投资组合if语句中:
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();
}
}
错误
调用非对象上的成员函数
表示您试图对非对象的变量使用函数
在这种情况下,$nomeportfolio->addideiasportfolio($iduser,$iduser)代码>
但为什么会这样?很简单,您将$nomeportfolio
设置为portfolio
类的一个实例,仅在代码的以下部分:
if ($portefolio == "Portfolio"){
$nomeportefolio="portefolio".$iduser;
$nomeportefolio = new Portefolio($iduser,$iduser);
}
但是,如果$portefolio
不等于“投资组合”,而$partial
等于“想法”,该怎么办
简单:p如果($portefolio==“portfolio”)
没有执行,它尝试调用$nomeportefolio
上的函数->addideAsPortfolio() $nomeportfolio=“portfolio.”$iduser的意义是什么代码>,因为您覆盖了它?