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つファイルをつくる)するのと、どちらがいいんでしょうか?
毎回リサイズで表示させるのは負荷がかかるのかなと思い…それなら最初の登録する際に別で小さいサイズのコピーを作ってそれを見せるようにしたほうがいいのかなと思いましたので。
以上、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
アロー演算子
と呼ばれています
「アロー」で通じます
//たぶん、こんな感じの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 クラスの中身が分からないのでなんともいえませんが想像するに こんな感じです
小さい画像ですが、私の場合は
・登録するとき
または
・一番初めに表示するとき
に小さいサムネイルファイルを生成しますね
その機能が何をするかで臨機応変にします
No.4
- 回答日時:
>ググってもうまくヒットせずで…
クラスとかオブジェクトを絡めて検索されては?
>使い方や意味をご教授いただけたらと思います。
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
No.3
- 回答日時:
そういえば->はなんて言うんでしょうね。
コールとか呼び出しとは言いますが。(当方はコール)
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)させたいときは
大きな画像のままクライアントに送信すると、クライアント側のブラウザが仕事をすることになります。
その上、ネットワークへの負荷が無駄に掛かることとなります。
地球環境にやさしくするために(サーバの領域を多少使ってでも)小さな画像を最初に用意すべきですね。
画像掲示板など動的に画像を生成せねばならない場合も同様です。
No.1
- 回答日時:
私は矢印演算子と呼んでいますが本当の名前は知りません
classで定義された変数や関数を指定するときに使います
ご質問のケースでは$thumbにはThumbnailクラスで定義された色々な変数や関数が含まれています。
$thumb->resize($_GET['width'],$_GET['height']);
は$thumbオブジェクトに含まれるresize()関数を実行します。
画像処理はメモリ食いますし負荷もかかるので私なら最初の1回だけにしますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
関数定義の関数名の前にある&(...
-
3つ以上の論理積は利用可能なの...
-
.phpファイルが、表示されない
-
PHP4対応のサーバーではinclude...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
zip圧縮の種類について
-
トランザクションが原因?DBに...
-
VB.NET 最下位のディレクトリ名...
-
.phpと.incファイルの違いはな...
-
PHPでFilename cannot be empty...
-
CSV出力にHTMLが入ってしまう
-
makefile でファイルをコピーす...
-
$_SESSION 有効期限をブラウザ...
-
CFileDialogの最初のディレクト...
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
include先でのinclude元の変数...
-
PHPでファイルをダウンロードさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
PHP4、PHP5 1ファイル複数クラ...
-
phpのクラスにて別ファイルの変...
-
class定義のphpをファイル分割...
-
・オブジェクト指向のメリット...
-
配列とオブジェクトの違い
-
PHP,privateの使用理由について
-
クラス変数とインスタンス変数
-
HTMLからRSSを取得できますか?
-
'_'(アンダースコア)の使い方...
-
PHPのクラス名の付け方
-
PHPのフレームワークの中でSmar...
-
require_onceについて
-
クラスが配布されているサイト
-
phpでオブジェクト指向と呼べる...
-
MVCモデル MV間のデータ共有
-
DirectoryIteratorクラスについて
-
インターフェイスと抽象メソッ...
-
【PHP】クラス と 関数 の違い
おすすめ情報