質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

2695閲覧

PHPでComposerのautoloadが機能しない

okame

総合スコア54

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2017/11/07 07:08

###前提・実現したいこと

  • MAMP4.2.1
  • PHP7.1.8
  • Composer1.1.2

名前空間を使ってクラスを呼び出す際に、requireでごちゃごちゃしないように
Composerのautoloadを使ってファイルの読み込みをしようとしているのですが、うまくいきません。

ちなみに現状はこんなディレクトリ構成、ファイル内容です。
composer.jsonにautoloadの記述をして、composer update 後の状態です。

. ├── app ├── composer.json ├── composer.lock ├── sample.php ├── src │   └── AppBudle │   ├── Common │   │   ├── Config.php │   │   └── DatabaseAccessObject.php │   └── Entity │   ├── Manager.php │   └── ManagerRepository.php <- ②このファイルを読み込みたい ├── vendor │   ├── autoload.php │   ├── composer │   │   ├── ClassLoader.php │   │   ├── LICENSE │   │   ├── autoload_classmap.php │   │   ├── autoload_namespaces.php │   │   ├── autoload_psr4.php │   │   ├── autoload_real.php │   │   ├── autoload_static.php │   │   └── installed.json │   └── twig │ ├── ... └── web ├── admin │   ├── index.php │   └── staff │   ├── add.php │   └── confirm.php <- ①このファイルから... ├── bootstrap-3.3.7-dist └── css ├── ...

json

1composer.json 2 3{ 4 "require": { 5 "twig/twig": "=1.9.2" 6 }, 7 "autoload": { 8 "psr-4": { 9 "AppBundle\": "src/AppBundle/" 10 } 11 } 12}

php

1autoload_psr4.php 2 3<?php 4 5// autoload_psr4.php @generated by Composer 6 7$vendorDir = dirname(dirname(__FILE__)); 8$baseDir = dirname($vendorDir); 9 10return array( 11 'AppBundle\' => array($baseDir . '/src/AppBundle'), 12);

php

1autoload_static.php 2 3<?php 4 5// autoload_static.php @generated by Composer 6 7namespace Composer\Autoload; 8 9class ComposerStaticInit9327fd10fb120f686d982fc491086a7f 10{ 11 public static $prefixLengthsPsr4 = array ( 12 'A' => 13 array ( 14 'AppBundle\' => 10, 15 ), 16 ); 17 18 public static $prefixDirsPsr4 = array ( 19 'AppBundle\' => 20 array ( 21 0 => __DIR__ . '/../..' . '/src/AppBundle', 22 ), 23 ); 24 25 public static $prefixesPsr0 = array ( 26 'T' => 27 array ( 28 'Twig_' => 29 array ( 30 0 => __DIR__ . '/..' . '/twig/twig/lib', 31 ), 32 ), 33 ); 34 35 public static function getInitializer(ClassLoader $loader) 36 { 37 return \Closure::bind(function () use ($loader) { 38 $loader->prefixLengthsPsr4 = ComposerStaticInit9327fd10fb120f686d982fc491086a7f::$prefixLengthsPsr4; 39 $loader->prefixDirsPsr4 = ComposerStaticInit9327fd10fb120f686d982fc491086a7f::$prefixDirsPsr4; 40 $loader->prefixesPsr0 = ComposerStaticInit9327fd10fb120f686d982fc491086a7f::$prefixesPsr0; 41 42 }, null, ClassLoader::class); 43 } 44}

php

1src/AppBundle/Entity/ManagerRepository.php 2 3<?php 4 5namespace AppBundle\Entity; 6 7class ManagerRepository 8{ 9 ...

php

1web/admin/staff/confirm.php 2 3<?php 4 5require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'; 6 7use AppBundle\Entity\ManagerRepository; 8 9$manager = new ManagerRepository(); 10...

###発生している問題・エラーメッセージ

上記のような記述でautoloadにてクラスを読み込もうとしているのですが、「クラス見つかんないっす」とエラーとなってしまいます。

Fatal error: Uncaught Error: Class 'AppBundle\Entity\ManagerRepository' not found in /Applications/MAMP/htdocs/web/admin/staff/confirm.php:16 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/web/admin/staff/confirm.php on line 16

###以上

皆様のお知恵を拝借できれば幸いです。宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

しつれいしました!
src/AppBundleが正しいのに、 src/AppBudle としていたことが原因でした(恥)。
ディレクトリ名を修正したら問題なくautoloadが機能しました。

投稿2017/11/07 07:25

okame

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問