Intereting Posts
PHP float / double хранится как MySQL DECIMAL Файл, загруженный с ftp_nb_put на FTP-сервер FileZilla в PHP, поврежден Вложенный запрос запроса MySQL Проверка репутации пользователя PHP и MySQL У меня есть 2 даты в PHP, как я могу запустить цикл foreach, чтобы пройти через все эти дни? Соединение Heroku Postgres из приложения localhost PHP Проблема маршрутизации с Slim framework Почему я получаю ошибку «Команды не синхронизированы; вы не можете запустить эту команду сейчас " Установка pecl и груши на OS X 10.11 El Capitan, macOS 10.12 Sierra, macOS 10.13 High Sierra MySQL ifnull эквивалент для php Получение файла на сервере, изменение размера с помощью PHP GD2, соображения безопасности В чем смысл E_ALL | E_STRICT, если это то же значение, что и E_ALL? Выполняет ли cron-работу последнее выполнение cron? Могу ли я использовать хип-хоп Facebook с такими фреймворками, как Zend Framework, cakephp, symfony PHP – как лучше определить, является ли текущий вызов из CLI или веб-сервера?

Doctrine 2.0 Bootstrap?

Итак, у меня есть файл Doctrine.php в иерархии папок, например:

 \
   включает\
     setup.php
     Учение \
       Common \
       DBAL \
       ORM \
       Symfony \
       Doctrine.php

Мой setup.php имеет следующее:

$rootPath = $_SERVER['DOCUMENT_ROOT']; $includePath = getcwd() . "\includes"; ini_set('include_path', '.'.PATH_SEPARATOR.$rootPath.PATH_SEPARATOR.$includePath); require_once 'includes\Doctrine\Doctrine.php'; 

Мой Doctrine.php:

 <?php /* * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * and is licensed under the LGPL. For more information, see * <http://www.doctrine-project.org>. */ require_once 'Doctrine/Common/ClassLoader.php'; $classLoader = new \Doctrine\Common\ClassLoader('Doctrine'); $classLoader->register(); $classLoader = new \Doctrine\Common\ClassLoader('Symfony', 'Doctrine'); $classLoader->register(); $configFile = getcwd() . DIRECTORY_SEPARATOR . 'cli-config.php'; $helperSet = null; if (file_exists($configFile)) { if ( ! is_readable($configFile)) { trigger_error( 'Configuration file [' . $configFile . '] does not have read permission.', E_ERROR ); } require $configFile; foreach ($GLOBALS as $helperSetCandidate) { if ($helperSetCandidate instanceof \Symfony\Component\Console\Helper\HelperSet) { $helperSet = $helperSetCandidate; break; } } } $helperSet = ($helperSet) ?: new \Symfony\Component\Console\Helper\HelperSet(); \Doctrine\ORM\Tools\Console\ConsoleRunner::run($helperSet); 

Теперь, когда я включаю my setup.php со всемирной страницы привет, я получаю следующие предупреждения:

 Примечание. Неопределенный индекс: argv в C: \ xampp \ htdocs \ SpaceWars \ включает \ Doctrine \ Symfony \ Component \ Console \ Input \ ArgvInput.php в строке 53

 Предупреждение: array_shift () ожидает, что параметр 1 будет массивом, null указан в C: \ xampp \ htdocs \ SpaceWars \ includes \ Doctrine \ Symfony \ Component \ Console \ Input \ ArgvInput.php в строке 57

Может ли кто-нибудь объяснить мне, что я делаю неправильно? Я попробовал Googling предупреждения, но, похоже, ничего не нашел.

Файл доктрины, который у вас есть, предназначен для запуска инструментов Doctrine из командной строки. Вместо этого вам нужно что-то похожее:

  use Doctrine\Common\ClassLoader, Doctrine\ORM\Configuration, Doctrine\ORM\EntityManager, Doctrine\DBAL\Types\Type, Doctrine\Common\Cache\ArrayCache, Doctrine\DBAL\Logging\EchoSqlLogger; // include the class loader directly require_once __DIR__ . '/Common/ClassLoader.php'; $doctrineClassLoader = new ClassLoader('Doctrine', __DIR__ . '/../'); $doctrineClassLoader->register(); // Set up caches $config = new Configuration; $cache = new ArrayCache; $config->setMetadataCacheImpl($cache); $config->setQueryCacheImpl($cache); // Metadata Driver $driverImpl = $config->newDefaultAnnotationDriver(array('/path/to/entities')); $config->setMetadataDriverImpl($driverImpl); // Proxy configuration $config->setProxyDir(DB_PROXY_DIR); $config->setProxyNamespace(DB_PROXY_NAMESPACE); $config->setAutoGenerateProxyClasses(DB_PROXY_GEN); // Database connection information $connectionOptions = array( 'driver' => 'pdo_mysql', 'user' => DB_USER, 'password' => DB_PASS, 'host' => DB_HOST, 'dbname' => DB_NAME, 'port' => DB_PORT ); // Create EntityManager $em = EntityManager::create($connectionOptions, $config); 

$em – это менеджер сущностей, который вы используете для сохранения и извлечения объектов. Это из документации здесь: http://www.doctrine-project.org/docs/orm/2.0/en/reference/configuration.html#obtaining-an-entitymanager

UPDATE Добавлены операторы использования в верхней части файла. Они необходимы, чтобы полное пространство имен не требовалось при использовании классов.

Ваша версия PHP, запущенная на CGI, не CLI

Задайте конфигурацию php.ini Кому {CLI}

Пример php.ini:

 ; Note: This directive is hardcoded to On for the CLI SAPI register_argc_argv = On 

argv – системная переменная
если вы запускаете скрипт из консоли, он должен существовать