简化laravel框架入口

这篇博客记录了将laravel框架入口简化的过程,主要保留了数据库模型和Redis功能,通过减少引入文件数量以实现更纯粹的PHP操作。作者探讨了将依赖项改为autoload的考虑,尽管这可能稍慢于直接引入,但为未来可能的需求提供了灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

use Illuminate\Database\Capsule\Manager; //数据库管理类
use Dotenv\Dotenv;
//自动加载
require __DIR__.'/../vendor/autoload.php';

//引入DotEnv
$dotenv = new Dotenv(__DIR__.'/../');
$dotenv->load();
//实例化服务器容器,注册事件,路由服务提供者
$app = new Illuminate\Container\Container;  //服务容器【服务的注册和解析】
/*foreach ([
             'cache'                => [\Illuminate\Cache\CacheManager::class, \Illuminate\Contracts\Cache\Factory::class],
             'cache.store'          => [\Illuminate\Cache\Repository::class, \Illuminate\Contracts\Cache\Repository::class],
             'config'               => [\Illuminate\Config\Repository::class, \Illuminate\Contracts\Config\Repository::class],
             'files'                => [\Illuminate\Filesystem\Filesystem::class],

         ] as $key => $aliases) {
    foreach ($aliases as $alias) {
        $app->alias($key, $alias);
    }
}*/

with(new Illuminate\Events\EventServiceProvider($app))->register();
with(new Illuminate\Routing\RoutingServiceProvider($app))->register();
\Illuminate\Container\Container::setInstance($app);
app()->instance('cache', new \Illuminate\Cache\CacheManager(app()));
$redisConfig = [

    'client' => 'predis',

    'default' => [
        'host' => getenv('REDIS_HOST', '127.0.0.1'),
        'password' => getenv('REDIS_PASSWORD', null),
        'port' => getenv('REDIS_PORT', 6379),
        'database' => 0,
    ],

];
$client = $redisConfig['client'];
unset($redisConfig['client']);
app()->instance('redis', new \Illuminate\Redis\RedisManager($client, $redisConfig));
$cacheConfig = [
    'default' => getenv('CACHE_DRIVER', 'file'),
    'stores' => [
        'apc' => [
            'driver' => 'apc',
        ],
        'array' => [
            'driver' => 'array',
        ],
        'database' => [
            'driver' => 'database',
            'table' => 'cache',
            'connection' => null,
        ],
        'file' => [
            'driver' => 'file',
            'path' => __DIR__.'/../storage/framework/cache/data',
        ],
        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => getenv('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                getenv('MEMCACHED_USERNAME'),
                getenv('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT  => 2000,
            ],
            'servers' => [
                [
                    'host' => getenv('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => getenv('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
    ],

    'prefix' => getenv(
        'CACHE_PREFIX',
        str_slug(getenv('APP_NAME', 'laravel'), '_').'_cache'
    ),
];
app()->instance('config', new \Illuminate\Config\Repository(['cache' => $cacheConfig]));

$database = [
    'driver'    => 'mysql',
    'host'      => getenv('DB_HOST'),
    'port'      => getenv('DB_PORT', '3306'),
    'database'  => getenv('DB_DATABASE'),
    'username'  => getenv('DB_USERNAME'),
    'password'  => getenv('DB_PASSWORD'),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];

//启动Eloquent ORM 模块并进行相关配置
$manager = new Manager();
$manager->addConnection($database); //加载配置
$manager->bootEloquent(); //启动
//加载路由
require __DIR__.'/../app/Http/Routes.php';
//实例化请求并分发处理请求
$request = Illuminate\Http\Request::CreateFromGlobals();
$response = $app['router']->dispatch($request);
//返回请求响应
$response->send();

这是laravel的index.php,基本只保留了路由、控制器、缓存、数据库模型以及少部分配置。本来有个需求是这样的,但是需要再简化,只留下缓存和数据库模型(基本就是纯php了)。心疼我琢磨了好几天,舍不得删,mark在这里看看以后能不能用上

———————————————————————————————————————————————————————

改良后,基本只剩下数据库模型,redis。引入文件建议autoload,因为我试了一个个挑出来,挑了一百多个文件。可能直接引入比autoload少了一些检索时间吧,anyway我也贴出来

<?php
require 'ApiRequireFiles.php';
//自动加载
//require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/../app/Models/User.php';

use Illuminate\Database\Capsule\Manager; //数据库管理类
use Dotenv\Dotenv;
//引入DotEnv
$dotenv = new Dotenv(__DIR__.'/../');
$dotenv->load();

//数据库模型
$database = [
    'driver'    => 'mysql',
    'host'      => getenv('DB_HOST'),
    'port'      => getenv('DB_PORT', '3306'),
    'database'  => getenv('DB_DATABASE'),
    'username'  => getenv('DB_USERNAME'),
    'password'  => getenv('DB_PASSWORD'),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];

//启动Eloquent ORM 模块并进行相关配置
$manager = new Manager();
$manager->addConnection($database); //加载配置
$manager->bootEloquent(); //启动

//redis缓存
$redisConfig = [
    'client' => 'predis',
    'default' => [
        'host' => getenv('REDIS_HOST', '127.0.0.1'),
        'password' => getenv('REDIS_PASSWORD', null),
        'port' => getenv('REDIS_PORT', 6379),
        'database' => 0,
    ],
];
$redisManager = new \Illuminate\Redis\RedisManager(\Illuminate\Support\Arr::pull($redisConfig, 'client', 'predis'), $redisConfig);
$redis = new \Illuminate\Cache\Repository(new \Illuminate\Cache\RedisStore($redisManager, false, 'default'));
$redis = $redis->getStore();
//$redis->tags(['api-test'])->put('api','api测试123缓存',1000);
//echo $redis->tags(['api-test'])->get('api');
$user = new \App\Http\Models\User();
$user = $user->find(49)->toArray();

$redis->tags(['api-user'])->put('user49',$user,1000);
var_dump($redis->tags(['api-user'])->get('user49'));

<?php
/**
 * Created by PhpStorm.
 * User: huangli
 * Date: 2019/3/25
 * Time: 14:21
 */

require __DIR__.'/../vendor/vlucas/phpdotenv/src/Dotenv.php';
require __DIR__.'/../vendor/vlucas/phpdotenv/src/Loader.php';
require __DIR__.'/../vendor/vlucas/phpdotenv/src/Parser.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Traits/CapsuleManagerTrait.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Collection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Debug/Dumper.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/helpers.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Str.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Arr.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/DetectsDeadlocks.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Events/StatementPrepared.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Events/QueryExecuted.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Connection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Grammar.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/Fluent.php';
require __DIR__.'/../vendor/psr/container/src/ContainerInterface.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Container/Container.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HidesAttributes.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Queue/QueueableEntity.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Queue/QueueableCollection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php';
//redis
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Redis/Factory.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Redis/Connections/PredisConnection.php';
require __DIR__.'/../vendor/predis/predis/src/ClientInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/OptionsInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/OptionInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/FactoryInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/ParametersInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/Parameters.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/ConnectionInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/NodeConnectionInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/AbstractConnection.php';
require __DIR__.'/../vendor/predis/predis/src/Response/ResponseInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Response/Status.php';
require __DIR__.'/../vendor/predis/predis/src/Response/ErrorInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Response/Error.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/StreamConnection.php';
require __DIR__.'/../vendor/predis/predis/src/Command/CommandInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Command/RawCommand.php';
require __DIR__.'/../vendor/predis/predis/src/Connection/Factory.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/ConnectionFactoryOption.php';
require __DIR__.'/../vendor/predis/predis/src/Profile/ProfileInterface.php';
require __DIR__.'/../vendor/predis/predis/src/Command/Command.php';
require __DIR__.'/../vendor/predis/predis/src/Command/StringSet.php';
require __DIR__.'/../vendor/predis/predis/src/Command/StringGet.php';
require __DIR__.'/../vendor/predis/predis/src/Command/SetAdd.php';
require __DIR__.'/../vendor/predis/predis/src/Command/StringSetExpire.php';
require __DIR__.'/../vendor/predis/predis/src/Profile/RedisProfile.php';
require __DIR__.'/../vendor/predis/predis/src/Profile/RedisVersion320.php';
require __DIR__.'/../vendor/predis/predis/src/Profile/Factory.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/ProfileOption.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/ExceptionsOption.php';
require __DIR__.'/../vendor/predis/predis/src/Configuration/Options.php';
require __DIR__.'/../vendor/predis/predis/src/PredisException.php';
require __DIR__.'/../vendor/predis/predis/src/Response/ServerException.php';
require __DIR__.'/../vendor/predis/predis/src/Client.php';
//require __DIR__.'/../vendor/predis/predis/autoload.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Redis/Connectors/PredisConnector.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Support/InteractsWithTime.php';
require __DIR__.'/../vendor/psr/simple-cache/src/CacheInterface.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/Repository.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/TagSet.php';
require __DIR__.'/../vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值