【问题标题】:basic php create composer package基本的php创建作曲家包
【发布时间】:2017-10-25 09:30:50
【问题描述】:

我想创建一个基本的 web 应用程序,使用 composer.json 自动加载框架,但我没有。

这是我的文件夹结构(项目名称是 minisafe)

-minisafe
|-app
|--models
|--controllers
|--views
|-bootload
|--app.php
|--autoload.php
|-public
|--index.php
|--.htaccess
|-vendor
|--atlas
|---hanik
|----src
|-----Application
|------Application.php
|----composer.json
|--composer
|---...
|-composer.json
|-composer.lock

根目录中的composer.json如下:

{
    "require": {
        "firebase/php-jwt": "^4.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
        }
    }
}

Application.php 如下:

<?php namespace Application;

class Application {
    function __construct()
    {
        echo 'asd';
    }
}

atlas/hanik 文件夹中的composer.json 如下:

{
    "require-dev": {
        "phpunit/phpunit": "4.0.*"
    },
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-0": {
            "Application\\": "src/"
        }
    }
}

bootload 文件夹中的app.php 如下:

<?php

$app = new Application\Application(realpath(__DIR__.'/../'));

这不起作用并出现此错误。请帮帮我...

error details

【问题讨论】:

  • 请您点击edit并将您的错误消息添加为文本,不得不点击进入图像只会让每个人的生活更加艰难。

标签: php json composer-php


【解决方案1】:

您忘记包含 composer 自动加载文件(在您的 index/app.php 文件中):

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

而且我在您的供应商目录中没有看到它。

【讨论】:

  • 我将它添加到 bootload/autoload.php 中,如下所示:DIR.'/../bootload/autoload.php' 中添加这个 php 文件; $app = 需要 DIR.'/../bootload/app.php';但不工作
  • src 文件夹中的第二个 composer.json 是我们使用它的原因,它引起了我的注意,供应商自动加载文件不需要应用程序文件夹。是不是导致了错误?
【解决方案2】:

我修好了。

我创建了一个名为 packages 的文件夹并传输到其中的 atlas 文件夹并添加 composer.json psr-4 部分

"包\":"包\atlas\hanik\src\"

并像这样使用:

$app = new Hanik\Application\Application(realpath(DIR.'/../'));

返回 $app;

就是这样:) ...谢谢大家

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2018-11-26
    • 2016-06-08
    • 1970-01-01
    • 2014-06-01
    • 2015-12-26
    • 2020-02-27
    相关资源
    最近更新 更多