Ошибка использования Spot ORM в PHP - PullRequest
0 голосов
/ 22 мая 2018

Я использую Spot ORM (http://phpdatamapper.com). Проблема: код завершается на полпути. Там мало документации о том, как заставить фреймворк сбрасывать ошибки для отладки. Код здесь:

namespace Entity;
namespace Config;


require 'vendor/autoload.php';

echo "hello";
set_time_limit(0);
error_reporting(E_ALL);



class Post extends \Spot\Entity
{
    protected static $table = 'posts';
    public static function fields()
    {
        return [
            'id'           => ['type' => 'integer', 'primary' => true, 'autoincrement' => true],
            'title'        => ['type' => 'string', 'required' => true],
            'body'         => ['type' => 'text', 'required' => true],
            'status'       => ['type' => 'integer', 'default' => 0, 'index' => true],
            'author_id'    => ['type' => 'integer', 'required' => true],
            'date_created' => ['type' => 'datetime', 'value' => new \DateTime()]
        ];
    }
}

class Url extends \Spot\Entity
{
    protected static $table = 'urls';
    public static function fields()
    {
        return [
            'id' => ['type' => 'integer', 'primary' => true, 'autoincrement' => true],
            'domain'           => ['type' => 'text'],
            'url'        => ['type' => 'text', 'required' => false],
            'classification1'         => ['type' => 'text', 'required' => false],
            'section' => ['type' => 'string', 'required' => false],
            'status'       => ['type' => 'text'],
         /*   'author_id'    => ['type' => 'integer', 'required' => true],
            'date_created' => ['type' => 'datetime', 'value' => new \DateTime()]
        ];
    }
}

$cfg = new \Spot\Config();

$spot = new \Spot\Locator($cfg);

$cfg->addConnection('mysql', [
    'dbname' => 'sotereading',
    'user' => 'root',
    'password' => 'root',
    'host' => 'localhost',
    'driver' => 'pdo_mysql',
]);

echo "hello";

/* this line has a problem */
$mapper = $spot->mapper('Entity\Post');
echo "hello";
$mapper->migrate();
echo "hello";

Я использовал простые операторы «echo», чтобы сузить, какая строка вызывает проблему, и я нашел ее (см. Комментарий в / * * / в приведенном выше коде). Почему эта проблема дает?'Entity \ Post' или 'Entity \ Url'.

1 Ответ

0 голосов
/ 05 сентября 2018

У вас есть двойное объявление пространства имен для начинающих, так что Post фактически является Config \ Post, а не Entity \ Post.

<?php
namespace Entity;
namespace Config;

class Post { }

$x = new Post();

echo "Class is: ", get_class($x);

?>

Class is: Config\Post
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...