Fatal error: Class 'RedBean_Facade' not found in ...

J'ai ce probleme je sais pas pourquoi, voici mon code :

<?php
require_once __DIR__ . '/config.inc.php';
require_once __DIR__ . '/../vendor/autoload.php';

use RedBean_Facade as R;

if(empty(R::$currentDB)) {
    $dsn = sprintf('%s:host=%s; dbname=%s', DB_TYPE, DB_HOST, DB_NAME);
    R::setup($dsn, DB_USER, DB_PASSWORD);
}

R::close();

8 réponses


Salut,

La facade de redbean est RedBeanPHP\R. Source.

(Je trouve quand même le message très expressif : il ne trouve pas la classe RedBean_Facade, ce qui signifie que soit tu n'as pas fait de composer install soit tu t'es trompé dans le nom. Le premier est facile à résoudre, et le second l'est tout autant, suffit de regarder le composer.json de Redbean pour voir ce qui est autoloadé et chercher dans les classes laquel est celle que tu cherches.)

dans la nouvelle mouture de redbean, ils on changé le redbean_facade c'est RedBeanPHP\Facade

Ils recommandent d'utiliser RedBeanPHP\R, comme ça si on utilise un use, on a R et non Facade, qui est générique. Un use as pourrait être utilisé bien entendu, mais use RedBeanPHP\R; est plus simple que use RedBeanPHP\Facade as R;. :)

Forever voila le composer.json

{
  "name": "gabordemooij/redbean",
  "description": "RedBeanPHP ORM",
  "keywords": ["orm"],
  "homepage": "http://redbeanphp.com/",
  "license": "New BSD and GPLv2",
  "authors": [
    {
      "name": "Gabor de Mooij",
      "email": "gabor@redbeanphp.com",
      "homepage": "http://redbeanphp.com"
    }
  ],
  "require": {
    "php": ">=5.3.4"
  },
  "autoload": {
    "psr-4": {
      "RedBeanPHP\\" : "RedBeanPHP"
    }
  }
}

Dois-je utiliser RedBeanPHP\R, RedBeanPHP\Facade ??

Je décrivais juste comment, avec un peu de reflexion, je suis arrivé à trouver la solution.

RedBeanPHP\R est, comme décrit dans les commentaires du fichier, l'option recommandé. C'est aussi proposé de créer un alias de Facade, mais ça requiert légerement plus de code.

Autre problème rencontré

Fatal error: Class 'RedBean_SimpleModel' not found in

Voici mon code

<?php
namespace Collectify\Model;

abstract class BaseModel extends \RedBean_SimpleModel
{
    public $slug;
    public $createdAt;
    public $updatedAt;
}

Je vais me citer, ça t'aidera probablement à te rappeller ce que je t'ai conseillé de faire quand tu cherches une classe dans un projet :

chercher dans les classes laquel est celle que tu cherches

Je t'offre le lien vers le dossier qui contient la classe que tu cherches. Tu verras que le nom n'a pas changé, ton code date juste d'avant les namespaces.