*

Laravelでクラスをnewする

公開日: : 投稿者:raru php, web技術

今回はLaravelでのクラスのnewの仕方です。
正確には、Laravelでの他ファイルで作成したClassの読み込み方です。
通常phpではrequireを利用しますが、たぶんLaravelではそれは美しくないと思われている(と僕が勝手に思っている)。

どうやらautoloadという仕組みがあるらしく、それによってrequireを宣言せずにクラスを自動で使えるようにしてくれるみたいです。

composer.jsonに追記する

今回私は/app/models/viewmodelsというフォルダを新規に作成して、その中に新しいクラスを作成しました。
そしてこのクラスをコントローラでnewしたいのですが、上手くできません。

そこでautoloadでのload対象設定を記述してあるcomposer.jsonを修正します。
今回は以下のように修正します。

"autoload": {
        "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/models/viewmodels",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
}

app/models/viewmodelsが追加されています。

またjsonを更新したら以下のコマンドを/app直下で実行しましょう。
/app直下というよりは、composer.jsonがある場所ですね。

composer dump-autoload

これでautoloadが更新され、viewmodels内のクラスも利用することができるようになりました。

ちなみにこのとき/app/vendor/composer/autoload_classmap.phpが更新されています。

global.phpの編集

もし上記だけで動かなかったら、こちらも修正してみてください。

/app/start/global.php

ClassLoader::addDirectories(array(
    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/models/viewmodels',
    app_path().'/database/seeds',
));

これでできるかと思います。
基本的にはこっちはlaravelそのもので設定する方法になります。

composerではautoloadというモジュールを利用しているという感じでしょう。

関連記事

no image

Javascript パターン

最近更新を行なえるほど技術を追っていませんが、日々の電車での移動時間に本を読んでいます。 2駅乗っ

記事を読む

no image

Node.jsのSocket.io入門

前置き WebRTCを使用して通信を行なうときに、offerなどの情報を伝える為にサーバサイドのプ

記事を読む

no image

WebRTC + Node によるルーム機能付きビデオチャット 2

前回の続き こちらは前回の記事の続きになります。 また前回の記事にコメントを頂いたのですが、

記事を読む

no image

PHPのcURLを利用してAPIをGET/POSTで叩く

PHPからcURLを利用してhttpのget, postで問い合わせを行ってみます。 今回はYAH

記事を読む

no image

Facebook APIを試してみました

Facebook APIが気になったのでちょっと試してみました。 まず私が勘違いしていたこと

記事を読む

no image

MAMPでLaravelを動作させる

先日laravelをMAMPのhtdocsに配置しましたが、当然それでは動かなかったので設定しました

記事を読む

no image

PHPでXMLをnamespaceを利用したxpathでnode取得

PHPでxmlを読み込んでxpathでnodeを取得して見たいと思います。 今回はyahooの形態

記事を読む

no image

システムの仕様書を作れそうなウェブアプリ

現在サービス開発を本気で取り組もうと思っているraruです。 本気が指すところは、事業として成立す

記事を読む

no image

要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります。

wordpressの更新を行おうとした時の上記のエラーが発生した場合に、いくつか対策方法があります。

記事を読む

no image

Mac OS X (Yosemite) にLaravelをインストール

Max OS 10.10(yosemite)にPHPフレームワークのLaravelをインストールして

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑