Call to a member function table() on a non-object
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- ondraondra81
- Člen | 82
Ahoj mám třídu Repository jako BaseClass
namespace App\Model;
abstract class Repository extends \Nette\Object
{
/** @var \Nette\Database\Context */
protected $database;
public function __construct(\Nette\Database\Context $db)
{
$this->database = $db;
}
}
a pak mám třidu PriceTableRepository která mě vrací chybu Call to a member function table() on a non-object
namespace App\Model;
class PriceTableRepository extends Repository
{
const PRICE_TABLE = 'pricetable';
/** @var \Nette\Database\Table\Selection */
private $table;
function __construct()
{
$this->table = $this->database->table(self::PRICE_TABLE);
}
}
Když to udělám takto, tak to funguje, ale nějak se mě to řešení nezdá
namespace App\Model;
class PriceTableRepository extends Repository
{
const PRICE_TABLE = 'pricetable';
/** @var \Nette\Database\Table\Selection */
private $table;
function __construct( \Nette\Database\Context $database)
{
parent::__construct($database);
$this->table = $this->database->table(self::PRICE_TABLE));
}
}
- David Kudera
- Člen | 455
Odpověděl jsi si sám, tohle je řešením ;-)
Kde jinde by totiž parent (Repository) vzal jen tak tu databázi v konstruktoru, když její potomek (PriceTableRepository) ten konstruktor přepíše?