
No.2ベストアンサー
- 回答日時:
ラッパークラスというのは、tomonkey0225さんもおっしゃっているように、別のクラスなどを包むようなクラスのことです。
セッション変数のラッパークラスというのは、基本的には、セッション変数に何でも値など挿入して、PHPのスクリプトを終了すれば、終了後もセッションが生きている間は保存される、という機能は提供されますが、
もっとアクセスするときにアクセスしやすいようにしたり、ちょっとした機能を増やしてやったりするようなものです。
例えば、
<?php
class My_Session{
protected $key = "mysession";
public function __construct($key){
session_start();
$this->key = $key;
}
public function set($name, $value=null){
if(is_array($name)){
foreach($name as $key => $value){
$this->set($key, $value);
}else{
$_SESSION[$this->key][$name] = $value;
}
}
public function get($name, $default = null){
return isset($_SESSION[$this->key][$name]) ? $_SESSION[$this->key][$name] : $default;
}
}
}
?>
とか、かなりざっくりですが作ったとします。
そうすると、
<?php
$session = new My_Session('session_name_key');
//インスタンス作成した時点でsessionを開始し、このクラスが扱うセッション変数のキーは「sessoin_name_key」以下にフォーカスが当たる。
$session->set('input_name', 'aiueo');
//上記の通り必ず$_SESSION['session_name_key']['input_name']に代入される
$value = $session->get('notdefined', 'test');
//$_SESSION['session_name_key']['notdefined']が存在しなかったら第二引数の「test」が$valueに代入される。
?>
とか。単純にセッション変数を配列で扱うよりも、コードがすっきりします。
※この場合は自分で書かなくてもZend FrameworkにZend_Session_Namespaceクラスといった便利なものがあります。
ラッパークラスは、セッションだけではなくて、例えば、
データベースに接続するためのPDOというクラスがありますが、
これを最初に接続するデータベースのパスだけ指定すれば、SQL文を発行しなくても内部的に勝手に処理してくれる、
Doctrineというライブラリがあります。
他にも、外部サーバに向けてHTTP通信を行う必要がある場合、fsockopen関数などを使って、ゴリゴリHTTPヘッダを記述擦る必要があるものが、Zend_Http_Clientクラスなんかを使うとそれらを抽象化して簡単に使えるようにしたものがあります。
このように、もともとのクラスや関数などが複雑な手続きをする必要がある物を、自分の目的に合わせて、もっと抽象度を上げて、簡単に扱えるようにしたものをラッパークラスと言うのだと思います。
回答ありがとうございました。
>別のクラスなどを包むようなクラス
>もともとのクラスや関数などが複雑な手続きをする必要がある物を、自分の目的に合わせて、もっと抽象度を上げて、簡単に扱えるようにしたもの
よく分かりました
後、具体的なコードを提示いただいたので、
大変分かりやすかったです。
コンストラクタに入れといて、インスタンス作成時に、
自動的に処理させるなんて、便利そうですねー
>Doctrineというライブラリ
初めて聞きました。これはちょっと調べてみたいと思います
>Zend_Http_Clientクラス
こちらも情報ありがとうございます。
Zend系についても、機会があれば触れてみたいと思っていたので、
メモしとこうと思います
No.1
- 回答日時:
以前に私もそれで調べた事があります。
結局いまいちわからずなんですが
基本的に質問者様の考えでいいと思います。
javaのラッパークラスというと型の代表的なラッパーがでてきますが
あくまでも今あるクラスを継承し使いやすくカスタマイズされたクラス。
といった感じかもしれません。
個人的にライブラリと同じようなもんだと認識していますが
そのライブラリをさらに使いやすくしたラッパーなんて使い方も出来るわけです。
そもそもラップwrapというワード自体が「包む」って事なんで
そういう事なのかなぁと。
>普通のクラスとは、何が違うのでしょうか?
基本的に何も違わないです。
ただラッパークラスというものはあくまでも何かを継承し使いやすくカスタマイズされたクラスであるという事ぐらいじゃないでしょうか?
的確な解答が出来ずに申し訳ありません。
この回答への補足
回答ありがとうございました
>基本的に何も違わないです。
>ただラッパークラスというものはあくまでも何かを継承し使いやすくカスタマイズされたクラスであるという事ぐらいじゃないでしょうか?
何となくイメージできました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- PHP Java のクラスには修飾子があるのに、PHP はクラスに修飾子が無い ? 2 2022/08/14 18:15
- HTML・CSS HTMLのdlとul どちらが正しいと思いますか 3 2023/02/23 11:20
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- カップル・彼氏・彼女 中三 彼女とクラスが分かれてしまいました。 私には付き合って4ヶ月の彼女がいます。昨年度も違うクラス 2 2023/04/13 20:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラッパークラスって何ですか?
-
$thisとコンストラクタについて
-
※staticと$thisの違いは何ですか
-
「クラス関数」「メンバ関数」...
-
オブジェクト指向はなぜそんな...
-
非オブジェクト指向で開発中の...
-
phpでクライアントのブラウザの...
-
WEBシステム作成でのオブジェク...
-
考えてみれば、ポリモーフィズ...
-
配列とオブジェクトの違い
-
HTMLからRSSを取得できますか?
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
microSDの装着による連続待受時...
-
mb_convert_encodingについて
-
ダウンロードすると画像が壊れ...
-
php.iniのエンコーディングの設...
-
「クラウドにアップロード」」...
-
どのように読み込んでるのでし...
-
session_startでクッキー範囲を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
PHP4、PHP5 1ファイル複数クラ...
-
phpのクラスにて別ファイルの変...
-
ラッパークラスって何ですか?
-
ワードプレスではPHPをどこまで...
-
class定義のphpをファイル分割...
-
ユーザ定義関数にデフォルト引...
-
php と perl
-
POSTとGET
-
PHP オートローダーについて
-
PHPでオブジェクト指向開発して...
-
配列とオブジェクトの違い
-
Smartyの変数について
-
正規表現について
-
phpのオブジェクトの使用方法に...
-
【PHP】set・getの使用について
-
DirectoryIteratorクラスについて
-
require_onceについて
-
クラスについて
-
クラスの生成の仕方
おすすめ情報