- ベストアンサー
-> について教えてください
phpを勉強しているところなんですが、->の意味がよくわかりません。 自分の持っている本にも調べ方が悪いのか見つからないし、ググってもうまくヒットせずで… >,=>なら大小や連想配列ってわかるのですが、->はなに?ってところで悩んでいます。 以下、適当なコードのサンプルです。 (2行目、3行目が問題の->が使われています) -> の使い方や意味をご教授いただけたらと思います。 $thumb = new Thumbnail($_GET['filename']); $thumb->resize($_GET['width'],$_GET['height']); $thumb->show(); それともう一点。 大きな画像(例 500px×500px)があるとき、それを小さく表示(100px×100px)させたいときは、リサイズさせて表示させるのと、DBにinsertする際にすでに別にスモールサイズで登録(500,100 2つファイルをつくる)するのと、どちらがいいんでしょうか? 毎回リサイズで表示させるのは負荷がかかるのかなと思い…それなら最初の登録する際に別で小さいサイズのコピーを作ってそれを見せるようにしたほうがいいのかなと思いましたので。 以上、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
アロー演算子 と呼ばれています 「アロー」で通じます //たぶん、こんな感じのclassが存在するんだと思います (* php4で動くようなサンプルです) class Thumbnail { function Thumbnail($filename){ //ファイルネームを保持する処理 } function resize($width,$height){ //リサイズする処理 } function show(){ //表示する処理 } } //インスタンスを生成します $thumb = new Thumbnail($_GET['filename']); Thumbnailというクラスの実態を作る作業です 大雑把に言えば、 クラスは「設計図」、インスタンス生成は「お家を作る」という感覚だと思ってください。 $thumb の中に、たくさんの 変数や 関数が含まれているもの、一般的にはオブジェクトと呼ぶ。 ためしに var_dump($thumb); とすれば、中に格納されている変数達が見れます //リサイズしたいサイズを指定 $thumb->resize($_GET['width'],$_GET['height']); $thumbは、さまざまな変数や関数をもっている といいましたが $thumbオブジェクト内のresize関数に対して($_GET['width'],$_GET['height'])を実行してください という意味です //表示 $thumb->show(); $thumb内のshowを実行してください の意味です という流れだと思います。どこから このソースを持ってきたのかわからないので Thumbnail クラスの中身が分からないのでなんともいえませんが想像するに こんな感じです 小さい画像ですが、私の場合は ・登録するとき または ・一番初めに表示するとき に小さいサムネイルファイルを生成しますね その機能が何をするかで臨機応変にします
その他の回答 (3)
- Nii
- ベストアンサー率48% (79/162)
>ググってもうまくヒットせずで… クラスとかオブジェクトを絡めて検索されては? >使い方や意味をご教授いただけたらと思います。 No1で既に書かれていますが、以下のページが参考になるかと http://www.scollabo.com/banban/php/php_11.html http://www.komonet.ne.jp/~php/chap10.htm >画像処理はメモリ食いますし負荷もかかるので最初の1回だけにしますね。 大抵はそれでいいかと思いますが、実際には要件によりけりだと・・・ 例えば、投稿された写真を表示する場合に、転用予防目的で、写真全体に透かしを入れて表示したいとします。 透かしは、固定位置だと、その部分だけを切り取られたら終わりですから、ランダムで挿入する必要があります。 しかし、ランダムでは重要な部分(人の顔等)にかぶる場合もあったので、毎回生成するようになりました。
お礼
ご回答ありがとうございます。 参考URLも大変助かりました。
- wp_
- ベストアンサー率54% (132/242)
そういえば->はなんて言うんでしょうね。 コールとか呼び出しとは言いますが。(当方はコール) javaとかだとメンバアクセス演算子とか言いますが微妙に違う気がする。 // と思ってたら答えが!アローなのか・・・ まにゅある class http://jp.php.net/manual/ja/language.oop5.basic.php /** * クラス定義 */ class Thumbnail { public $filename = ""; private $width = 100; private $height = 100; public function __construct($arg) { $this->filename = $arg; } public function resize($w,$h) { $this->width = $w; $this->height = $h; } public function show() { echo '<img src="'.$this->filename . '"' . ' width="' . $this->width.'"' . ' height="' . $this->height . '"' . ' />'; ; } } /** * 処理 */ // インスタンス生成 $thumb = new Thumbnail('/tmp/moge/gazou.jpg'); // 関数をcall $thumb->resize(500,500); $thumb->show(); // debug print_r($thumb); echo $thumb->filename; // /tmp/moge/gazou.jpg echo $thumb->width; // ERROR クラス定義は適当ですが。 ->はクラスで定義された関数(メソッド)や変数(メンバ)を実行、取得するためのものです。 例ですとfilenameがメンバ、resize()やshow()がメソッドです。 $thisや$thumbはインスタンスと呼ばれ、メンバとメソッドを内包する「オブジェクト」になります。($thisは自分自身を指す) 上記コードだとクラスの威力が実感できませんが、継承・抽象クラスなどが使えるようになれば恩恵を理解できるかと思います。 マニュアルを中心に参照し、試行錯誤すると良いでしょう。 実用コードですとsmarty、それに付随するフレームワーク(Mapleとか)のソースを眺めると理解が深まるかと。 >大きな画像(例 500px×500px)があるとき、それを小さく表示(100px×100px)させたいときは 大きな画像のままクライアントに送信すると、クライアント側のブラウザが仕事をすることになります。 その上、ネットワークへの負荷が無駄に掛かることとなります。 地球環境にやさしくするために(サーバの領域を多少使ってでも)小さな画像を最初に用意すべきですね。 画像掲示板など動的に画像を生成せねばならない場合も同様です。
お礼
ご回答ありがとうございます。 丁寧にいろいろと書いてくださって恐れ入ります。 とてもためになりました。
- php504
- ベストアンサー率42% (926/2160)
私は矢印演算子と呼んでいますが本当の名前は知りません classで定義された変数や関数を指定するときに使います ご質問のケースでは$thumbにはThumbnailクラスで定義された色々な変数や関数が含まれています。 $thumb->resize($_GET['width'],$_GET['height']); は$thumbオブジェクトに含まれるresize()関数を実行します。 画像処理はメモリ食いますし負荷もかかるので私なら最初の1回だけにしますね。
お礼
ご回答ありがとうございます。 勉強になりました!
お礼
ご回答ありがとうございます。 アロー演算子というんですね。 参考になりました。