Problème appel de fonction

Par Manide, il y a 10 ans


Bonjour,

Je galère à trouver la solution à mon problème. (Je suis sur que c'est tout bête).

Voilà mon code :

$app = App::getInstance(); <?php foreach($app->getTable('User')->skinsWon() as $history) :?> <h4 class="list-group-item"><?= $history->name; ?></h4> <?= '<img src='.$history->file.' alt=""/>' ?> <?php endforeach; ?>

Voilà ma fonction qui se situe dans la classe Table :

public function skinsWon(){ if(isset($_SESSION['auth'])){ $user_id = $_SESSION['auth']->id; $id = App::getInstance()->getDb()->query('SELECT skins_won.id_users_members FROM skins_won'); $user = $id[0]->id_users_members; } if($user === $user_id){ return App::getInstance()->getTable('User')->query( 'SELECT medias.name, medias.file FROM skins_won INNER JOIN medias ON skins_won.id_medias = medias.id WHERE skins_won.id_users_members=?',[$user_id], true); }else{ return NULL; } }

et voici l'erreur :

require(D:\VirtualHost\test\www/core/Table/App.php): failed to open stream: No such file or directory in D:\VirtualHost\test\www\core\Autoloader.php on line 28

L'autoloader fonctionne correctement car ça marche pour cette fonction qui est elle aussi dans Table :

public function reconnect_from_cookie(){ if(session_status() == PHP_SESSION_NONE){ session_start(); } if(isset($_COOKIE['remember']) && !isset($_SESSION['auth'])){ $remember_token = $_COOKIE['remember']; $parts = explode('//', $remember_token); $user_id = $parts[0]; $usersMembers = App::getInstance()->getTable('User'); $user = $usersMembers->query('SELECT * FROM users_members WHERE id= ?', [$user_id], true); if($user){ $expected = $user_id . '//'. $user->remember_token . sha1($user_id . 'getmemore'); if($expected === $remember_token){ $_SESSION['auth'] = $user; setcookie('remember', $remember_token, time() + 60*60*24*7); }else{ setcookie('remember', NULL, -1); } }else{ setcookie('remember', NULL, -1); } } }

Un pti coup de pouce?

Merci

edit :
Quand je mets le code ci-dessous directement dans le page ça fonctionne

$user_id = $_SESSION['auth']->id; $skins = App::getInstance()->getTable('User')->query( 'SELECT medias.name, medias.file FROM skins_won INNER JOIN medias ON skins_won.id_medias = medias.id WHERE skins_won.id_users_members=?',[$user_id], true);

1 réponse

Manide, il y a 10 ans

Résolu :
Remplacer : App::getInstance()->getDb() par $this
Remplacer : App::getInstance()->getTable('User') par $this.