トップ  > メモ一覧  > カテゴリ「オブジェクト指向」の絞り込み結果 : 16件

16件中 1 〜 10 表示  1 | 2  次の6件> 最後»

No.4587【引用】オブジェクト指向できていますか?

オブジェクト指向できていますか?
http://www.slideshare.net/MoriharuOhzu/ss-14083300

オブジェクト指向できていますか? from Moriharu Ohzu

引用元

更新:2012/08/30 08:53 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.4358【引用】PHP classの教室

PHP classの教室
http://www.slideshare.net/yandod/php-class

引用元

更新:2012/03/21 20:06 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1656 シングルトン


    function &getInstance()
    {
        static $singleton;
        if (empty($singleton)) {
            $singleton = new OpenPNE_DB();
        }
        return $singleton;
    }

更新:2009/10/22 02:33 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1653 縛り技:abstruct

クラスの抽象化

PHP 5 では、抽象クラスとメソッドが導入されました。 abstractとして宣言されたクラスのインスタンスを生成することはできません。 1つ以上の抽象メソッドを含む全てのクラスもまた抽象クラスとなります。 abstractとして定義されたメソッドは、そのメソッドの外観を宣言するのみで、 実装を定義することはできません。

抽象クラスから継承する際、親クラスの宣言で abstract としてマークされた 全てのメソッドは、子クラスで定義されなければなりません。加えて、 これらのメソッドは同等 (あるいはより緩い制約) の 可視性 で定義される必要があります。例えば、抽象メソッドが protected として定義された場合、その関数の実装は protected または public のどちらかとして定義する必要があります。private にすることはできません。

例1 抽象クラスの例

<?php
abstract class AbstractClass
{
    
// 拡張クラスにこのメソッドの定義を強制する
    
abstract protected function getValue();
    abstract protected function 
prefixValue($prefix);

    
// Common method
    
public function printOut() {
        print 
$this->getValue() . "\n";
    }
}

class 
ConcreteClass1 extends AbstractClass
{
    protected function 
getValue() {
        return 
"ConcreteClass1";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass1";
    }
}

class 
ConcreteClass2 extends AbstractClass
{
    public function 
getValue() {
        return 
"ConcreteClass2";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo 
$class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo 
$class2->prefixValue('FOO_') ."\n";
?>

上の例の出力は以下となります。

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

'abstract'という名前のユーザー定義関数または関数を有さない コードは修正なしに動作します。

引用元

更新:2009/10/20 22:30 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1655 デストラクタ

デストラクタ

void __destruct ( void )

PHP 5 では、C++ のような他のオブジェクト指向言語に似た概念のデストラクタが 導入されました。デストラクタメソッドは、特定のオブジェクトへの全てのリファレンスが 削除された直後やオブジェクトが明示的に破棄された直後にコールされます。 あるいは、スクリプトの終了時にも順不同でコールされます。

例2 デストラクタの例

<?php
class MyDestructableClass {
   function 
__construct() {
       print 
"In constructor\n";
       
$this->name "MyDestructableClass";
   }

   function 
__destruct() {
       print 
"Destroying " $this->name "\n";
   }
}

$obj = new MyDestructableClass();
?>

インスタンスの破棄時、処理の終わりにやりたいことをここに書く!


更新:2009/10/20 22:30 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1652 タイプヒンティング

タイプヒンティング

PHP 5では、タイプヒンティング(Type Hinting)が導入されました。 これにより、関数は、 (クラスの名前を関数プロトタイプの中に指定することにより) パラメータをオブジェクトもしくは配列 (PHP5.1以降) が必ず指定されるようにすることができるようになりました。 しかし、デフォルトのパラメータの値として NULL を使用した場合は、後から任意の値を引数に指定できるようになります。

例1 タイプヒンティングの例

<?php
// とあるクラス
class MyClass
{
    
/**
     * テスト関数
     *
     * 第 1 引数は OtherClass 型のオブジェクトでなければならない
     */
    
public function test(OtherClass $otherclass) {
        echo 
$otherclass->var;
    }


    
/**
     * もう一つのテスト関数
     *
     * 第 1 引数は配列でなければならない
     */
    
public function test_array(array $input_array) {
        
print_r($input_array);
    }
}

// もう一つのサンプルクラス
class OtherClass {
    public 
$var 'Hello World';
}
?>

引用元

更新:2009/10/20 22:25 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1651 インスタンスの縛り技:instanceof (型演算子)


例1 クラスでの instanceof の使用法

<?php
class MyClass
{
}

class 
NotMyClass
{
}
$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

上の例の出力は以下となります。

bool(true)
bool(false)

引用元

更新:2009/10/20 22:24 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1650 例外・try・catche・throw

例1 例外を投げるには
<?php
function inverse($x) {
    if (!
$x) {
        throw new 
Exception('ゼロによる除算。');
    }
    else return 
1/$x;
}

try {
    echo 
inverse(5) . "\n";
    echo 
inverse(0) . "\n";
} catch (
Exception $e) {
    echo 
'捕捉した例外: ',  $e->getMessage(), "\n";
}

// 実行は継続される
echo 'Hello World';
?>

上の例の出力は以下となります。

0.2
捕捉した例外: ゼロによる除算。
Hello World


※例外:PHP5で追加された概念
・try     :呼び出し側
・throw:呼ばれる側
・catch:例外時の処理

引用元

更新:2009/10/20 22:20 カテゴリ: PHP  > オブジェクト指向 ▲トップ

No.1629 ◆オブ脳化計画

◆オブ脳化計画

設計時
    シンプルに考える
        具体的処理のことは考えない

○オブジェクト
    要素

○クラス
    くくり・大枠
    くくりの大きさ→抽象度
    名詞

    ○プロパティ
        クラスの性質

    ○メソッド
        クラスでやること
        動詞

○継承
    具体化⇔抽象化

○カプセル化
    上司は結果のみ知る
        部下のやり方がかわっても知らん
        そんな仕組み

○ポリモーフィズム
    ?

例:コンバータ
    ⇒何をやるかを考える
        AをBにする(2系の情報を3系にする)
            ⇒抽象クラス
            例
                メンバー情報のAをBにする⇒より具体的なクラス⇒継承
                日記情報のAをBにする
            メソッド
                とってくる
                並べる
                いれる

◎モデリング
    ⇒カプセル化
    Aをしたい
    Aという機能をZがよぶ
        A:クラス
        Z:よぶ側
    Z
        A
        B
        C
    A・B・Cで共通化できる箇所を見抜く
        ⇒親クラス化する(継承)

○よく使うデザインパターン
    A
        template
        factory
    B
        adaptar
        singleton

○public・private
    影響範囲

○static
    無し:扱う対象がインスタンスに属する
    有り:扱う対象がクラス自体に属する

○コンストラクタの中と外
    中:動的なもの
    外:値が決まっているもの

○命名
    クラス名:名詞
    メソッド::動詞

◎クラス名とファイル名
    記述形式
        参考
            http://framework.zend.com/manual/ja/coding-standard.coding-style.html#coding-standard.coding-style.classes
    命名規則
        参考
            http://framework.zend.com/manual/ja/coding-standard.naming-conventions.html
        プレフィックス-ディレクトリ名-ファイル名
            例
                "Zend/Db/Table.php" の場合、クラス名を "Zend_Db_Table"
        大文字で始める
            クラス名が複数の単語から成り立つ場合は、 それぞれの単語の最初の文字を大文字にしなければなりません。 大文字を連続して使用することはできません。例えば "Zend_PDF" というクラス名は許可されません。代わりに "Zend_Pdf" を使用します。
         抽象クラス
            抽象クラスの名前は最後が "Abstract" (そしてその前にはアンダースコアはつけない) でなければなりません。
            例
                Zend_Controller_PluginAbstract
        ファイル名
            Zend/Db.php
            Zend/Controller/Front.php
            Zend/View/Helper/FormRadio.php
        関数名に含めることができるのは英数字のみです。
            アンダースコアを使用してはいけません。
            数字を含めることは可能ですが、ほとんどの場合はお勧めしません。
            例
                filterInput()
                getElementById()
                widgetFactory()
            +α
                オブジェクト指向のプログラミングでは、 インスタンス変数や静的変数にアクセスするためのメソッドは "get" あるいは "set" のいずれかで始めなければなりません。singleton や factory などのデザインパターンを使用する場合は、 メソッド名にパターンの名前を含めるようにしましょう。こうすることで、 どのパターンを使っているのかがわかりやすくなります。
                オブジェクト内で "private" あるいは "protected" と宣言されているメソッドについては、メソッド名の最初にアンダースコア 1 文字をつけなければなりません。アンダースコアを使用できるのは、 この場合のみです。"public" と宣言されているメソッドについては、 決してアンダースコアで始めてはいけません。
                グローバル関数は、できる限り使用しないようにしましょう。 このような関数は、静的クラスにまとめることを推奨します。
        変数
            変数名に含めることができるのは英数字のみです。 アンダースコアを使用してはいけません。 数字を含めることは可能ですが、ほとんどの場合はお勧めしません。
            クラス内で "private" あるいは "protected" と宣言されている変数については、変数名の最初にアンダースコア 1 文字をつけなければなりません。アンダースコアを使用できるのは、 この場合のみです。"public" と宣言されている変数については、 決してアンダースコアで始めてはいけません。
    関数名と同様 (上の 3.3 を参照ください)、 変数名も常に小文字で開始する "camelCaps" 方式を使用しなければなりません。
        定数
            定数名には英数字およびアンダースコアを使用することができます。 定数名には数字を使用してもかまいません。
            定数名は、常にすべて大文字にします。
            定数名の単語の間はアンダースコアで区切らなければなりません。 例えば

引用元

更新:2009/10/15 06:47 カテゴリ: PHP  > オブジェクト指向 ▲トップ
16件中 1 〜 10 表示  1 | 2  次の6件> 最後»

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

Python

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0