• 締切済み

use と requireの違いは?

use と require(やinclude)の違いは何でしょうか? requireの使い方はほぼ理解できていると思っていますが、useの使い方がわかりません。 useを使っているところでrequireを使えたりするのでしょうか? phpの公式をみてもいまいちピンときません。 useについてわかりやすく教えていただけないでしょうか?

みんなの回答

回答No.4

PHP5.3からの名前空間における新機能ですね。 http://www.php.net/manual/ja/language.namespaces.importing.php requireは、外部のファイルを読み出してくるもので、 useは、すでに定義された名前空間のものを利用するのに使います。 -----Test.php----- namespace Test; class Cat{......} ----------------- ----index.php------ require 'Test.php'; //ファイルを読んでから $cat = Test\Cat(); //と名前空間で呼び出してもよいが、ちょっと長いので、 use Test\Cat; $cat = new Cat(); //とすれば短くかける ----------------- 基本的に、エイリアス(ショートカット)です。 Windowsなどのファイルパスの記述に似てます。 毎回、階層深いフォルダを開いて行って、実行ファイルを起動するより、 いつも使っているデスクトップなどにショートカットを置いておいてそこから実行ファイルを起動する というような感じです。

baaaaaaaaan
質問者

お礼

あれ?その例だと require 'Test.php'; //ファイルを読んでから $cat = new Cat(); と名前空間なしで2行でもいけるのでは? ショートカット的というイメージには賛成です。つかいこなせれば絶対パスのわずらわしさの代わりになりそうですね。 ただ、それ以外のメリットや効果がいまいちよくわかりません。 まず、これはディレクトリ構造に対応した階層構造にしないといけないのか、それとも勝手に階層序列や階層名を創造しても働くものなのか、とか、requireのように玉突き的に引っ張ってくる対象をつなげれるのか(つなげれない、と公式にはかかれていたような気がしますが、だとするとrequireの方が便利じゃん、ということになる)とか、あるファイル内で定義した名前空間を他のファイルでuse指定するとなぜインクルードできるのか(各ファイル内の定義情報を知るには各ファイル内を見ないといけないのではないかと思うのですが、そうすると全ファイルの中身を検索して名前空間のチェックをかけてひっぱってくるとかいうことをやっているのか?そんな自動全検索をしているとするならば、名前空間の使用をuseで書いてやらなくても、ソース内でいきなり相対指定パスでクラスを読み出せたりできるんじゃないの?)とか。 ありがとうございます。

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.3

もしかして、PerlのプログラムをPHPだと思って見ているとか。 Perlにはrequireに似たuseがあります。

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

トレイトのことなら・・ ファイルではなくクラスにクラスの機能を読み込むものです。 PHP: トレイト http://www.php.net/manual/ja/language.oop5.traits.php

参考URL:
http://www.php.net/manual/ja/language.oop5.traits.php
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

php公式 には use という関数は有りません。たぶん、フレームワークとかpearとか、それともだれかのライブラリで提供されてるユーザー定義関数でしょう。 どこに定義されてて、何やってる関数なのかは、あなたのお使いのファイルを調べるしかありません。 require や include は関数のように記述しますが、phpの制御構造です。 http://jp.php.net/manual/ja/function.include.php

関連するQ&A