我是需要帮助的新手。我试图获得父母价值,但我没有做到这一点。非常感谢有用的评论。提前谢谢。
abstract class mainClass
{
protected $cost=0;
public $set=false;
function setCost($cost){
$this->cost;
}
function getCost()
{
return $this->cost;
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if( $cost==0)
{
parent::getCost();
$cost=$this->cost;
}
return$this->cost=$cost;
}
}
db循环通过供应商分支买/卖交易
while ($rs=$pdoUpdate->fetch(PDO::FETCH_OBJ))
{
//$rs->current='35' transferring from supplier 35
//$rs->cost=$50.00
//$rs->isTo='27' to branch 27
// several branches/suppliers transactions
if(!isset($supplier[$rs->current]->set))
{
$supplier[$rs->current]=new supplierClass();
$supplier[$rs->current]->set=true;
}
if(!isset($branch[$rs->isTo]->set))
{
$branch[$rs->isTo]=new branchClass();
$branch[$rs->isTo]->set=true;
}
$supplier[$rs->current]->setCost($rs->cost);
$branch[$rs->isTo]->setCost(0);
}
echo "branch price=". $branch[$rs->isTo]->getCost();
// branch price=0
但我希望它默认供应商的成本为50美元!
很抱歉,如果这是完全错误的,但这对我来说是新的 非常感谢。我希望我能向你学习。
答案 0 :(得分:0)
起初
$供应商[$ rs->当前] 和 $ branch [$ rs-> isTo] - 这是两个不同的对象
对于此示例对象 A 和 B ( $ supplier [$ rs-> current] 和 $ branch [$ RS-> ISTO] 强>)
此代码: $ supplier [$ rs-> current] - > setCost($ rs-> cost); - 在对象 A 中设置费用。
此代码: $ branch [$ rs-> isTo] - > setCost(0); - 在对象 B 中设置费用 > 但是 B 不知道类 A ,因此,成本(对象B)= 0
在第二个
代码: parent :: getCost(); - 返回对象" B "的值(费用)。这不需要打电话。
下一行,您将使用属性(费用对象" B ")而不使用该方法。
你可以这样做:
function setCost ($cost)
{
if( $cost==0)
{
$this->cost = $this->getCost();
}
return $this->cost;
}
<强>第三强>
要解决您的问题 - 您需要使用一个对象。
如何做到这一点 - 这取决于整体任务和资源。
作为一个例子,我可以提供这个解决方案:
class Cost
{
protected $cost = 0;
function setCost($cost){
$this->cost;
}
function getCost()
{
return $this->cost;
}
}
abstract class mainClass
{
public $set=false;
public $cost;
function __construct(Cost $cost)
{
$this->cost = $cost;
}
function getCost()
{
return $this->cost->getCost();
}
function setCost ($cost)
{
$this->cost->setCost($cost);
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if($cost==0)
{
$cost=$this->cost->getCost();
}
$this->cost->setCost($cost);
}
}
或使用静态类
class Cost
{
protected static $cost = 0;
function static setCost($cost){
static::$cost;
}
function static getCost()
{
static::$cost;
}
}
abstract class mainClass
{
public $set=false;
function getCost()
{
return Cost::getCost();
}
function setCost ($cost)
{
Cost::setCost($cost);
}
}
class supplierClass extends mainClass { }
class branchClass extends supplierClass
{
function setCost ($cost)
{
if($cost==0)
{
$cost=Cost::getCost();
}
Cost::setCost($cost);
}
}