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

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

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

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

Q&A

1回答

1618閲覧

phpで質問です。

KosukeYamamoto

総合スコア220

PHP

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

0グッド

0クリップ

投稿2016/01/17 08:18

<?php spl_autoload_register(function($class) { $prefix = 'MyApp\\'; if (strpos($class, $prefix) === 0) { $className = substr($class, strlen($prefix)); $classFilePath = __DIR__ . '/' . $className . '.php'; if (file_exists($classFilePath)) { require $classFilePath; } else { echo 'No such class: ' . $className; exit; } } }); と <?php /* MyApp index.php controller MyApp\Controller\Index -> lib/Controller/Index.php */ spl_autoload_register(function($class) { $prefix = 'MyApp\\'; if (strpos($class, $prefix) === 0) { $className = substr($class, strlen($prefix)); $classFilePath = __DIR__ . '/lib2/' . str_replace('\\', '/', $className) . '.php'; if (file_exists($classFilePath)) { require $classFilePath; } } }); こちらの二つを同じautoload中に書くにはどうすればいいでしょうか? config上で以下のように書くとどちらか一方へrequire_onceしてしまうようです。 require_once(__DIR__ . '/autoload3.php'); require_once(__DIR__ . '/functions.php'); require_once(__DIR__ . '/autoload2.php'); なので一つのautoloadにまとめたいんですが、、、 どうしたらいいでしょうか???

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

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

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

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

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

guest

回答1

0

どっちがautoload3.phpでautoload2.phpかはちゃと記載しましょう。(まぁ、今回はあんまり関係ありませんが)

こういうコードは不格好なのでもっと優秀なautoloaderを作るべきですが、
このコードでなんとかするなら

spl_autoload_register(function($class) { $prefix = 'MyApp\\'; if (strpos($class, $prefix) === 0) { $className = substr($class, strlen($prefix)); $classFilePath = DIR . '/' . $className . '.php'; if (file_exists($classFilePath)) { require $classFilePath; return; } $classFilePath = DIR . '/lib2/' . str_replace('\\', '/', $className) . '.php'; if (file_exists($classFilePath)) { require $classFilePath; return; } echo 'No such class: ' . $className; exit; } });

ッて感じかな。酔っ払っているのでクソコードですし、もしかしたらバグコードかも…

投稿2016/01/17 08:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/01/17 08:37 編集

多分、いまのKosukeYamamotoさんには理解できないと思うんですが、補足しておくと、 何がこのコードで不格好かというと、autoloadの基準がクラス名になってることです。 この場合、読み込むクラス全てのパスを考えてコードを書かなければなりません。 だから、汎用性がなくなります。 でもまっとうなシステムでは読み込むべきクラスはディレクトリ単位でまとめられているので、autoloadの基準もディレクトリにすべきです。 そのほうが、圧倒的にコードがわかりやすく、負担も少なくなります。 将来、気になったら声をかけてください。多分、なんらかの見返りとともにお答えします。(^-^ (なんとなく修正しました…)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問