Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在slim framework 4中使用条令?_Php_Doctrine Orm_Slim 4 - Fatal编程技术网

Php 如何在slim framework 4中使用条令?

Php 如何在slim framework 4中使用条令?,php,doctrine-orm,slim-4,Php,Doctrine Orm,Slim 4,尝试将条令与slim framework 4结合使用,但没有可用的文档。通过以下链接上的信息给出错误 未找到类“slim container” Slim 4没有集成容器。例如,您可以使用PHPDI/PHPDI(由composer添加)。之后,您可以像这样使用它: // bootstrap.php use DI\ContainerBuilder; require __DIR__ . '/vendor/autoload.php'; // Instantiate PHP-DI ContainerB

尝试将条令与slim framework 4结合使用,但没有可用的文档。通过以下链接上的信息给出错误

未找到类“slim container”


Slim 4没有集成容器。例如,您可以使用PHPDI/PHPDI(由composer添加)。之后,您可以像这样使用它:
// bootstrap.php
use DI\ContainerBuilder;

require __DIR__ . '/vendor/autoload.php';

// Instantiate PHP-DI ContainerBuilder
$containerBuilder = new ContainerBuilder();

// Set up settings
$settings = require __DIR__ . '/app/settings.php';
$settings($containerBuilder);

// Set up dependencies
$dependencies = require __DIR__.'/app/dependencies.php';
$dependencies($containerBuilder);

// Build PHP-DI Container instance
$container = $containerBuilder->build();

// Instantiate the app
AppFactory::setContainer($container);
$app = AppFactory::create();

/* .. other code here .. */
?>

<? 
// settings.php

use DI\ContainerBuilder; 

return function (ContainerBuilder $containerBuilder) {
// Global Settings Object
$containerBuilder->addDefinitions([
'settings' => [
   'doctrine' => [
            'dev_mode' => true,
            'cache_dir' => __DIR__.'/../var/cache/doctrine',
            'metadata_dirs' => [__DIR__.'/../src/Domain/'],
            'connection' => [
                'driver' => 'pdo_mysql',
                'host' => 'webdb',
                'port' => 3306,
                'dbname' => 'db',
                'user' => 'user',
                'password' => 'pass',
            ]
  ]
]);
}

?>

<?
//dependencies.php
use DI\ContainerBuilder;

use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Cache\FilesystemCache;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;

return function (ContainerBuilder $containerBuilder) {
$containerBuilder->addDefinitions([
         EntityManagerInterface::class => function (ContainerInterface $c): EntityManager {
        $doctrineSettings = $c->get('settings')['doctrine'];

        $config = Setup::createAnnotationMetadataConfiguration(
            $doctrineSettings['metadata_dirs'],
            $doctrineSettings['dev_mode']
        );

        $config->setMetadataDriverImpl(
            new AnnotationDriver(
                new AnnotationReader,
                $doctrineSettings['metadata_dirs']
            )
        );

        $config->setMetadataCacheImpl(
            new FilesystemCache($doctrineSettings['cache_dir'])
        );

        return EntityManager::create($doctrineSettings['connection'], $config);
    }
]);
}       

?>
//bootstrap.php
使用DI\ContainerBuilder;
需要“目录”/供应商/autoload.php';
//实例化PHP-DI容器生成器
$containerBuilder=新的containerBuilder();
//设置设置
$settings=require\uuuuuu DIR\uuuuuuu/app/settings.php';
$settings($containerBuilder);
//设置依赖项
$dependencies=require _DIR _.'/app/dependencies.php';
$dependencies($containerBuilder);
//构建PHP-DI容器实例
$container=$containerBuilder->build();
//实例化应用程序
AppFactory::setContainer($container);
$app=AppFactory::create();
/* .. 其他代码在这里*/
?>

这会给我以下错误消息,预期类型为“条令\Common\Persistence\Mapping\Driver\MappingDriver”。找到“条令\ORM\Mapping\Driver\AnnotationDriver”。用于调试的信息太少。从您在
dependencies.php中使用的类中查找名称空间,您是否复制粘贴了此代码?这是唯一的一个例子,也许条令中有一些改变。这个方法在Configuration.php文件中。我想你可能知道斯利姆发生了什么变化。这是我第一次使用该框架。看起来这个函数现在需要
MappingDriver$driverImpl
Hm,我现在在我的项目中看不到这个文件,你能显示你的代码吗?我已经在创建了一个github repo。文件是slim-boilerplate/app/orm.php-第26-31行希望这对我通过
MappingDriver$driverImpl
会有所帮助错误消失,但我不确定这是否就是全部。
// bootstrap.php
use DI\ContainerBuilder;

require __DIR__ . '/vendor/autoload.php';

// Instantiate PHP-DI ContainerBuilder
$containerBuilder = new ContainerBuilder();

// Set up settings
$settings = require __DIR__ . '/app/settings.php';
$settings($containerBuilder);

// Set up dependencies
$dependencies = require __DIR__.'/app/dependencies.php';
$dependencies($containerBuilder);

// Build PHP-DI Container instance
$container = $containerBuilder->build();

// Instantiate the app
AppFactory::setContainer($container);
$app = AppFactory::create();

/* .. other code here .. */
?>

<? 
// settings.php

use DI\ContainerBuilder; 

return function (ContainerBuilder $containerBuilder) {
// Global Settings Object
$containerBuilder->addDefinitions([
'settings' => [
   'doctrine' => [
            'dev_mode' => true,
            'cache_dir' => __DIR__.'/../var/cache/doctrine',
            'metadata_dirs' => [__DIR__.'/../src/Domain/'],
            'connection' => [
                'driver' => 'pdo_mysql',
                'host' => 'webdb',
                'port' => 3306,
                'dbname' => 'db',
                'user' => 'user',
                'password' => 'pass',
            ]
  ]
]);
}

?>

<?
//dependencies.php
use DI\ContainerBuilder;

use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Cache\FilesystemCache;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;

return function (ContainerBuilder $containerBuilder) {
$containerBuilder->addDefinitions([
         EntityManagerInterface::class => function (ContainerInterface $c): EntityManager {
        $doctrineSettings = $c->get('settings')['doctrine'];

        $config = Setup::createAnnotationMetadataConfiguration(
            $doctrineSettings['metadata_dirs'],
            $doctrineSettings['dev_mode']
        );

        $config->setMetadataDriverImpl(
            new AnnotationDriver(
                new AnnotationReader,
                $doctrineSettings['metadata_dirs']
            )
        );

        $config->setMetadataCacheImpl(
            new FilesystemCache($doctrineSettings['cache_dir'])
        );

        return EntityManager::create($doctrineSettings['connection'], $config);
    }
]);
}       

?>