【问题标题】:Having Access to a file inside Package of Laravel 4可以访问 Laravel 4 包中的文件
【发布时间】:2015-03-06 17:18:25
【问题描述】:

我正在为 Laravel 4 开发一个包,其中我创建了一个文件,该文件应该可以在安装我的包的应用程序中访问

文件的路径是这样的

 myPackage-
     |--src
         |--MyNamepace
               |--MyPackage
               |    |--libs
               |         |--myFile.php 
               |-myPackageServiceProvider 

在我的 composer.json 文件中,我有以下内容:

 "autoload": {

    "classmap": [
        "src/controllers",
        "src/views",
        "src/models",
        "src/database/migrations"
    ],
    "psr-0": {
        "MyNamespace\\MyPackage": "src/"
    }

myFile.php 具有以下命名空间和内容:

<?php namespace MyNamespace\MyPackage\libs;


   return [
     //some data here
   ];

问题:

我在哪里可能犯了这个文件的路径不包含在应用程序的autoload_classmap.php 文件中的错误,并且我在安装包的应用程序中无权访问它?

【问题讨论】:

  • 这个问题的关键是你的composer.json文件中的psr-0命名空间声明。恐怕我对它的了解还不够,无法明确回答这个问题,所以你应该看看the docs for composer。
  • myFile.php 里面有什么?命名空间设置正确吗?
  • @lukasgeiter 我编辑了问题请再检查一遍
  • 显然你的文件不包含一个类,所以很明显它不包含在autoload_CLASSmap.php... 是某种配置文件吗?
  • @lukasgeiter 我刚刚意识到我在哪里犯了错误,是的,它是一个配置文件

标签: laravel laravel-4 namespaces composer-php autoload


【解决方案1】:

由于您的文件不包含类,它不会被自动加载,并且显然不包含在autoload_CLASSmap.php 中。

如果你只为 Laravel 开发一个包,你可以简单地使用 Laravel 处理配置文件的方式:

  1. 将文件放入myPackage/src/config/myFile.php
  2. 通过Config::get('myPackage::myFile.foo)` 访问配置(它与正常的 Laravel 配置值相同)

More information on package development for Laravel

您也可以使用require“加载”文件。更棒的是,您可以使用 File::getRequire():

$config = File::getRequire('path/to/file.php');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2015-01-18
    • 2013-02-02
    • 2020-02-04
    • 2017-06-18
    • 2015-02-22
    • 2020-02-11
    • 2013-07-09
    相关资源
    最近更新 更多