Web Memo/PHP_Class
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*Class(PHP) [#iee6ef77]
RIGHT:更新日&lastmod();
PHP5でのClassについてはクラスとはあるオブジェクトをクラス...
''オブジェクトのプロパティ、メソッドへのアクセス''
オブジェクト変数->プロパティ=値
戻り値=オブジェクト変数->メソッド(引数)
このクラスはそのままでは使用しないで、クラスのコピーを作...
クラスのコピーすることを「インスタンスの作成」といい、で...
''オブジェクトの作成''
$ism = new ismClass();
オブジェクト(変数)は$ism、コピー元のクラスはismClassを指定
**簡単クラス [#u04879e1]
クラス名: ismClass~
プロパティ: call~
メソッド: goism
プロパティは varキーワードで指定する。
<?php
// クラスを定義
class ismClass{
// プロパティを指定
var $call = "JE2ISM";
// メソッドを指定
function goism($name){
$ret = "私は" . $name . "です \n";
return $ret;
}
}
//オブジェクトの作成
$ism = new ismClass();
//プロパティの表示
echo $ism->call . "\n";
//メソッドの実行
$data = $ism->goism("okada");
echo $data;
?>
***プロパティ、メソッドのスコープ範囲 [#l75e218b]
プロパティ、メソッドは同一クラスからしか参照できないもの...
public : クラスの内外に限らず、どこからでも参照/変更が...
private : そのクラスのメソッドの中からのみ参照/変更が可...
protected : そのクラスとそのクラスを継承したクラスのメソ...
プロパティやメソッドで上記を指定しないときはpublicとして...
また、プロパティはPHP5ではvarを使用しないで上記どれかを使...
<?php
// Classを定義しオブジェクトを作成したとき、コンストラク...
class IsmClass{
// privateがついているので内部からしかCallできない
private function pMethod($name){
$ret = sprintf("%s さんダミーだよ \n", $name);
printf("%s わいわい \n", $name);
return $ret;
}
public function ismMethod($name){
// 内部のメソッドを指定するのは $this->をつけて指定
printf("%s", $this->pMethod($name));
}
}
$objCls = new IsmClass();
$objCls->ismMethod("JE2ISM");
?>
以下のようにprivateを指定すると~
$objCls->pMethod("JE2ISM");
以下のようなエラーが生じる
PHP Fatal error: Call to private method IsmClass::pMeth...
in /home/okada/public_html/smarty_test/class_test/cls_pr...
***コンストラクタ [#cc0aea15]
コンストラクタとはクラスをインスタンス化する場合に最初に...
<?php
// Classを定義しオブジェクトを作成したとき、コンストラク...
class IsmClass{
public function __construct($data){
// public function IsmClass($data){
print("IsmClass というクラスのオブジェクトが作成...
printf("%s というデータが作成時渡されました\n", ...
}
public function ism(){
print("ダミーだよ \n");
}
}
$objCls = new IsmClass("岡田です");
?>
***クラスの継承 [#v108d6e3]
既存のクラスを「親クラス」「スーパークラス」「基底クラス...
親クラス:ismClass~
子クラス:ism_sub_Class~
<?php
class ismClass{
//子クラスからのみ呼び出しが可能。もし、ism2()側にもつけ...
protected function ism(){
print("ismClass::ismが呼び出された \n");
}
function ism2(){
print("ismClass::ism2が呼び出された \n");
}
}
class ism_sub_Class extends ismClass{
// 親クラスの書き換え
function ism(){
print("ism_sub_Class::ismが呼び出された \n");
}
// 子クラスで定義
function ism3(){
print("ism_sub_Class::ism3が呼び出された \n");
}
$obj = new ism_sub_Class();
$obj->ism();
$obj->ism2();
$obj->ism3();
?>
***オーバライド禁止(final) [#oc1da18f]
親クラスのメソッドを子クラスで書き換えができなくなるよう...
以下のように「final]を追加する
final function ism(){
print("ismClass::ismが呼び出された \n");
}
子クラスで、書き換えると以下のようなエラーが出る
PHP Fatal error: Cannot override final method ismClass:...
in /home/okada/public_html/smarty_test/class_test/cls_ex...
***静的クラス [#d219e086]
クラス状態に影響をおよぼさないクラス(プロパティも変更し...
呼び出しは
クラス名::メソッド(引数)
<?php
// 静的クラス定義
class IsmClass{
public static function ism($data){
print("IsmClass という静的クラス\n");
printf("%s というデータが渡されました\n", $data);
}
}
IsmClass::ism("岡田です");
?>
***インターフェイス [#uf02e94b]
interfaceとはメソッドの宣言を集めたもの。メソッドの内容は...
詳しい利用方法はゆっくり考える
class クラス名 implements インターフェイス名
でクラス化して使用する
<?php
interface MyInterface {
public function test();
}
class Impl implements MyInterface {
public function test() {
print "hogehoge\n";
}
}
$i = new Impl();
$i->test();
?>
***__setと__getについて [#b03d66de]
PHP5につては、宣言されていないプロパティは自動生成される~
以下の例はプロパティbは宣言されていないが、代入と同時に生...
123~
456~
となる
<?php
class Hoge {
public $a;
}
$obj = new Hoge;
$obj->a = "123 \n";
print $obj->a;
$obj->b = "456 \n";
print $obj->b;
?>
このように定義されていない値を指定した場合に値を代入した...
<?php
class Hoge {
public $a;
function __set($name, $value) {
$this->a = $value;
print $name . "\n";
}
function __get($name){
print "未定義プロパティ名は" . $name . "\n";
}
}
$obj = new Hoge;
$obj->b = "123 \n";
print $obj->a;
$obj->b = "456 \n";
print $obj->a;
print $obj->b;
?>
結果
123
b
456
未定義プロパティ名はb
***子クラスのコンストラクトで親クラスのコンストラクトを指...
PHP5ではコンストラクトを__construct()で指定するが子クラス...
''親クラス[ismClass.class.php]''
<?php
class ismClass{
public $v, $u;
// function __construct(){ <==これで子クラスからismC...
function ismClass(){
$this->u = "ABC";
}
function ism(){
printf("%s と %sがセットされています\n", $this->...
}
}
?>
''子クラス[test_extends.php]''
<?php
require_once('ismClass.class.php');
class ism_sub_Class extends ismClass{
function __construct(){
$this->ismClass(); //親クラスのコンストラクタの...
$this->v = "JE2ISM";
}
}
$obj = new ism_sub_Class();
$obj->ism();
?>
''結果''
$ php test_extends.php
JE2ISM と ABCがセットされています
''エラー内容''
PHP Fatal error: Call to undefined method ism_sub_Class...
in /home/okada/public_html/smarty_test/class_test/test_e...
***__call [#ed1950b2]
クラス定義されないメソッドを呼び出した場合通常はエラーす...
<?php
class ismTest{
function __call($name ,$args){
printf("間違えたメソッドは %s 引数", $name);
print_r($args); //配列の出力
}
}
$test = new ismTest();
$test->abc(1,2,3);
?>
''実行結果''
間違えたメソッドは abc 引数Array
(
[0] => 1
[1] => 2
[2] => 3
)
---------------------------------------------------------...
RIGHT:[[以前のページ:http://wwwism.dyndns.org/hp/phpclass...
終了行:
*Class(PHP) [#iee6ef77]
RIGHT:更新日&lastmod();
PHP5でのClassについてはクラスとはあるオブジェクトをクラス...
''オブジェクトのプロパティ、メソッドへのアクセス''
オブジェクト変数->プロパティ=値
戻り値=オブジェクト変数->メソッド(引数)
このクラスはそのままでは使用しないで、クラスのコピーを作...
クラスのコピーすることを「インスタンスの作成」といい、で...
''オブジェクトの作成''
$ism = new ismClass();
オブジェクト(変数)は$ism、コピー元のクラスはismClassを指定
**簡単クラス [#u04879e1]
クラス名: ismClass~
プロパティ: call~
メソッド: goism
プロパティは varキーワードで指定する。
<?php
// クラスを定義
class ismClass{
// プロパティを指定
var $call = "JE2ISM";
// メソッドを指定
function goism($name){
$ret = "私は" . $name . "です \n";
return $ret;
}
}
//オブジェクトの作成
$ism = new ismClass();
//プロパティの表示
echo $ism->call . "\n";
//メソッドの実行
$data = $ism->goism("okada");
echo $data;
?>
***プロパティ、メソッドのスコープ範囲 [#l75e218b]
プロパティ、メソッドは同一クラスからしか参照できないもの...
public : クラスの内外に限らず、どこからでも参照/変更が...
private : そのクラスのメソッドの中からのみ参照/変更が可...
protected : そのクラスとそのクラスを継承したクラスのメソ...
プロパティやメソッドで上記を指定しないときはpublicとして...
また、プロパティはPHP5ではvarを使用しないで上記どれかを使...
<?php
// Classを定義しオブジェクトを作成したとき、コンストラク...
class IsmClass{
// privateがついているので内部からしかCallできない
private function pMethod($name){
$ret = sprintf("%s さんダミーだよ \n", $name);
printf("%s わいわい \n", $name);
return $ret;
}
public function ismMethod($name){
// 内部のメソッドを指定するのは $this->をつけて指定
printf("%s", $this->pMethod($name));
}
}
$objCls = new IsmClass();
$objCls->ismMethod("JE2ISM");
?>
以下のようにprivateを指定すると~
$objCls->pMethod("JE2ISM");
以下のようなエラーが生じる
PHP Fatal error: Call to private method IsmClass::pMeth...
in /home/okada/public_html/smarty_test/class_test/cls_pr...
***コンストラクタ [#cc0aea15]
コンストラクタとはクラスをインスタンス化する場合に最初に...
<?php
// Classを定義しオブジェクトを作成したとき、コンストラク...
class IsmClass{
public function __construct($data){
// public function IsmClass($data){
print("IsmClass というクラスのオブジェクトが作成...
printf("%s というデータが作成時渡されました\n", ...
}
public function ism(){
print("ダミーだよ \n");
}
}
$objCls = new IsmClass("岡田です");
?>
***クラスの継承 [#v108d6e3]
既存のクラスを「親クラス」「スーパークラス」「基底クラス...
親クラス:ismClass~
子クラス:ism_sub_Class~
<?php
class ismClass{
//子クラスからのみ呼び出しが可能。もし、ism2()側にもつけ...
protected function ism(){
print("ismClass::ismが呼び出された \n");
}
function ism2(){
print("ismClass::ism2が呼び出された \n");
}
}
class ism_sub_Class extends ismClass{
// 親クラスの書き換え
function ism(){
print("ism_sub_Class::ismが呼び出された \n");
}
// 子クラスで定義
function ism3(){
print("ism_sub_Class::ism3が呼び出された \n");
}
$obj = new ism_sub_Class();
$obj->ism();
$obj->ism2();
$obj->ism3();
?>
***オーバライド禁止(final) [#oc1da18f]
親クラスのメソッドを子クラスで書き換えができなくなるよう...
以下のように「final]を追加する
final function ism(){
print("ismClass::ismが呼び出された \n");
}
子クラスで、書き換えると以下のようなエラーが出る
PHP Fatal error: Cannot override final method ismClass:...
in /home/okada/public_html/smarty_test/class_test/cls_ex...
***静的クラス [#d219e086]
クラス状態に影響をおよぼさないクラス(プロパティも変更し...
呼び出しは
クラス名::メソッド(引数)
<?php
// 静的クラス定義
class IsmClass{
public static function ism($data){
print("IsmClass という静的クラス\n");
printf("%s というデータが渡されました\n", $data);
}
}
IsmClass::ism("岡田です");
?>
***インターフェイス [#uf02e94b]
interfaceとはメソッドの宣言を集めたもの。メソッドの内容は...
詳しい利用方法はゆっくり考える
class クラス名 implements インターフェイス名
でクラス化して使用する
<?php
interface MyInterface {
public function test();
}
class Impl implements MyInterface {
public function test() {
print "hogehoge\n";
}
}
$i = new Impl();
$i->test();
?>
***__setと__getについて [#b03d66de]
PHP5につては、宣言されていないプロパティは自動生成される~
以下の例はプロパティbは宣言されていないが、代入と同時に生...
123~
456~
となる
<?php
class Hoge {
public $a;
}
$obj = new Hoge;
$obj->a = "123 \n";
print $obj->a;
$obj->b = "456 \n";
print $obj->b;
?>
このように定義されていない値を指定した場合に値を代入した...
<?php
class Hoge {
public $a;
function __set($name, $value) {
$this->a = $value;
print $name . "\n";
}
function __get($name){
print "未定義プロパティ名は" . $name . "\n";
}
}
$obj = new Hoge;
$obj->b = "123 \n";
print $obj->a;
$obj->b = "456 \n";
print $obj->a;
print $obj->b;
?>
結果
123
b
456
未定義プロパティ名はb
***子クラスのコンストラクトで親クラスのコンストラクトを指...
PHP5ではコンストラクトを__construct()で指定するが子クラス...
''親クラス[ismClass.class.php]''
<?php
class ismClass{
public $v, $u;
// function __construct(){ <==これで子クラスからismC...
function ismClass(){
$this->u = "ABC";
}
function ism(){
printf("%s と %sがセットされています\n", $this->...
}
}
?>
''子クラス[test_extends.php]''
<?php
require_once('ismClass.class.php');
class ism_sub_Class extends ismClass{
function __construct(){
$this->ismClass(); //親クラスのコンストラクタの...
$this->v = "JE2ISM";
}
}
$obj = new ism_sub_Class();
$obj->ism();
?>
''結果''
$ php test_extends.php
JE2ISM と ABCがセットされています
''エラー内容''
PHP Fatal error: Call to undefined method ism_sub_Class...
in /home/okada/public_html/smarty_test/class_test/test_e...
***__call [#ed1950b2]
クラス定義されないメソッドを呼び出した場合通常はエラーす...
<?php
class ismTest{
function __call($name ,$args){
printf("間違えたメソッドは %s 引数", $name);
print_r($args); //配列の出力
}
}
$test = new ismTest();
$test->abc(1,2,3);
?>
''実行結果''
間違えたメソッドは abc 引数Array
(
[0] => 1
[1] => 2
[2] => 3
)
---------------------------------------------------------...
RIGHT:[[以前のページ:http://wwwism.dyndns.org/hp/phpclass...
ページ名: