Bonsoir tout le monde, voilà une sacré erreur que je viens de récupérer, j'ai un peut chercher sur internet, mais rien pour régler mon problème, on trouve simplement que cette erreur correspond au fait qu'un ":" à été inatendu dans le code
// Si le controller à une table, on précise celle ci, sinon on prend le nom du controller
if(isset($controller::$table)) {
$table = $controller::$table;
}
else {
$table = $this->request->controller;
}
Voilà la ligne du problème
if(isset($controller::$table)) {
Il en va de même pour toutes les lignes avec
$controller::$table
Apparemment sa ne se fait pas comme ça =S en local je n'es aucun problème mais sur mon serveur impossible de résoudre ce problème.
Si je remplace ma variable $controller par le nom du controller
Nomcontroller::$table
Alors là sa marche, seulement, comme son nom l'indique c'est une variable, donc pour une classe portant un autre nom, sa ne marche plus, je suis donc obligé de garder le $controller
Je sais que je pourrais faire
$controller = new $controller();
$controller->$table
Mais cette classe est déjà chargé, donc je n'es pas envie de la rechargé pour rien.
Une solution ?
Merci d'avance.
Salut,
Cette façon ne fonctionne que depuis PHP 5.3.0, es-tu d'être dans cette config?
J'aimerais éviter de créer une méthode isDefined() dans chacun de mes controller, la variables $table est en static
, elle est donc accessible depuis n'importe où en faisant
NomController::$table;
Sans aucun problème, mais si je fais
$controller = $this->request->controller; // Avec controller = NomController
$controller::$table;
Alors là plus rien ne marche, mais si ce n'est pas réglable sans créer une autre méthode dans mon Controller je le rechargerais =S
Sa ne marche pas non plus à appelant la classe -_- =S
<?php
class Posts extends Controller {
static $table = 'Posts';
function index() {
...]
}
function edit($id = null) {
...]
}
function delete($id = null) {
...]
}
}
?>
et
$className = ucfirst($this->request->controller)
$controller = new $className($this->request);
echo $className::$table;
echo $controller->table;
sa me retourne ça
Posts
Notice: Undefined property: Posts::$table
En faisant
$className::$table
ou
$controller->table
?
Enfin j'ai vérifier et non : PHP Version 5.2.6-1+lenny13
Je suis en train de voir si je peux faire une mise à jour de mon serveur mutualisé, mais je sais pas si je pourrais ='(