请帮助我在代码下理解这一点


please help me understand this under code

public function save(PropelPDO $con = null)
{
  if ($this->isNew() && !$this->getExpiresAt())
  {
    $now = $this->getCreatedAt() ? $this->getCreatedAt('U') : time();
    $this->setExpiresAt($now + 86400 * sfConfig::get('app_active_days'));
  }
  return parent::save($con);
}

我不明白返回家长::保存($con(请帮助我,谢谢

它调用父方法save所以无论这个类从它扩展什么类,它都在调用该方法。

class Animal {
    public function getName($name) {
        return "My fav animal: " . $name;   
    }
}
class Dog extends Animal {
    public function getName($name) {
        return parent::getName($name);
    }
}
$dog = new Dog();
echo $dog->getName('poodle');

这个类扩展了一个 Propel Model 类,该类也有一个 save(( 方法。此 save 方法覆盖父级的 save(( 方法。当调用这个被覆盖的 save(( 时,它首先执行一些与此具体类相关的工作,然后调用父类的 save((,它将在数据库中保留对象的属性。

如果你看一下类声明,它会说类似

class ThisClass extends anotherClass. 

您不理解的行正在返回另一个类中 save(( 方法的输出

parent

是表示"此类正在扩展的类"的关键字

::(范围解析运算符(允许您调用该方法 - 前提是它被声明为静态而不实例化类 -

除非有其他事情发生,否则您应该能够将该行替换为

return $this->save($con);

::是范围解析运算符。它允许您访问类中的属性或方法。

parent 关键字引用当前类的父类。

考虑到这一点,您的 return 语句正在调用类父级的 save() 方法。

相关文章: