最近、いつ泣きましたか?

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つファイルをつくる)するのと、どちらがいいんでしょうか?
毎回リサイズで表示させるのは負荷がかかるのかなと思い…それなら最初の登録する際に別で小さいサイズのコピーを作ってそれを見せるようにしたほうがいいのかなと思いましたので。

以上、よろしくお願いします。

A 回答 (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 クラスの中身が分からないのでなんともいえませんが想像するに こんな感じです




小さい画像ですが、私の場合は
・登録するとき
または
・一番初めに表示するとき
に小さいサムネイルファイルを生成しますね
その機能が何をするかで臨機応変にします
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
アロー演算子というんですね。
参考になりました。

お礼日時:2007/12/06 01:07

>ググってもうまくヒットせずで…


クラスとかオブジェクトを絡めて検索されては?

>使い方や意味をご教授いただけたらと思います。
No1で既に書かれていますが、以下のページが参考になるかと
http://www.scollabo.com/banban/php/php_11.html
http://www.komonet.ne.jp/~php/chap10.htm

>画像処理はメモリ食いますし負荷もかかるので最初の1回だけにしますね。
大抵はそれでいいかと思いますが、実際には要件によりけりだと・・・
例えば、投稿された写真を表示する場合に、転用予防目的で、写真全体に透かしを入れて表示したいとします。
透かしは、固定位置だと、その部分だけを切り取られたら終わりですから、ランダムで挿入する必要があります。
しかし、ランダムでは重要な部分(人の顔等)にかぶる場合もあったので、毎回生成するようになりました。

参考URL:http://www.scollabo.com/banban/php/php_11.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考URLも大変助かりました。

お礼日時:2007/12/06 01:09

そういえば->はなんて言うんでしょうね。


コールとか呼び出しとは言いますが。(当方はコール)
javaとかだとメンバアクセス演算子とか言いますが微妙に違う気がする。
// と思ってたら答えが!アローなのか・・・

まにゅある class
http://jp.php.net/manual/ja/language.oop5.basic. …

/**
* クラス定義
*/
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)させたいときは
大きな画像のままクライアントに送信すると、クライアント側のブラウザが仕事をすることになります。
その上、ネットワークへの負荷が無駄に掛かることとなります。
地球環境にやさしくするために(サーバの領域を多少使ってでも)小さな画像を最初に用意すべきですね。
画像掲示板など動的に画像を生成せねばならない場合も同様です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
丁寧にいろいろと書いてくださって恐れ入ります。
とてもためになりました。

お礼日時:2007/12/06 01:08

私は矢印演算子と呼んでいますが本当の名前は知りません


classで定義された変数や関数を指定するときに使います
ご質問のケースでは$thumbにはThumbnailクラスで定義された色々な変数や関数が含まれています。
$thumb->resize($_GET['width'],$_GET['height']);
は$thumbオブジェクトに含まれるresize()関数を実行します。

画像処理はメモリ食いますし負荷もかかるので私なら最初の1回だけにしますね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
勉強になりました!

お礼日時:2007/12/06 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!