2006-05-14

Eilinė amerika (PHP)

Tema: Piece of code — Emilis @ 22:59

Paskutiniu metu man labai norėjosi multiple inheritance su PHP.

Tai tiek užkniso, kad prisėdau, pasibandžiau ir atradau, kad bent jau metodus skolintis (ko man iš esmės ir reikėjo) iš ne vienos klasės galima gana paprastai.

Skriptukas pasibandymui jei kam įdomu bus ir pravers:

<?php

class First
{
    var $first_var;

    function echoVar()
    {
        echo “$this->first_var<br>n”;
    }
}

class Second
{
    function echoItalicFirstVar()
    {
        echo “<em>$this->first_var</em><br>n”;
    }

    function echoBoldMyVar()
    {
        echo “<strong>$this->my_var</strong><br>n”;
    }
}

class MyClass extends First
{
    var $my_var;

    function echoMyVar()
    {
        echo “$this->my_var<br>n”;
    }

    // Methods that operate on MyClass    // object attributes from Second class:
    function echoItalicFirstVar() { Second::echoItalicFirstVar(); }
    function echoBoldMyVar() { Second::echoBoldMyVar(); }
}

$obj = &new MyClass();

$obj->first_var = “This is first var.”;
$obj->my_var = “This is my var.”;

$obj->echoVar();
$obj->echoItalicFirstVar();
$obj->echoMyVar();
$obj->echoBoldMyVar();

?>


6 komentarai»

  1. bet tai cia kazkaip nesamoningai. kodel ju nereikia paskelbti statiniais metodais, o imi ir naudoji?

    Komentavo: Incognito-R @ 2006-05-15 00:18

  2. Manau, nu į multiple inherintance kaip ir nelabai panašu… (ale paveldimi tik metodai, o atributų kaip ir nėra…) Beje kokias problemas reikėjo spręsti naudojant multiple inherintance? O kad PHP 4 taip interpretuoja static metodus t.y. žiauru…

    Komentavo: doU @ 2006-05-15 00:47

  3. Ramiai ramiai moralės sergėtojai, dorovės sargai… šits bajerius padeda, kad nebereiktų rašyt to pačio kodo keliose vietose.

    Tai laikau, kad visgi gėris. Nors gal idėjiškai ir neteisinga pagal gražius modelius.

    Komentavo: Emilis @ 2006-05-15 01:56

  4. na sita tikrai sunku pavadint multiple inheritance :) ir ne multiple inheritance turbut tau ir reikejo

    Komentavo: Povilas @ 2006-05-15 07:00

  5. va sitas turbut netgi paprastesnis variantas butu :)
    http://povilas.visada.lt/27-multiple-inheritance-in-php

    Komentavo: Povilas @ 2006-05-15 08:22

  6. reiktu veikti multiple inheritance.
    Ir naujose kalbose to norima atsisakyti (atsisakoma).
    Tiesa sakant maciau tai tik C++’e :)
    O javoj ir kitose tai igyvendinama per Mixin’us ar interfeisus

    Komentavo: nerka @ 2006-05-16 00:14

Komentarų RSS.TrackBack URI

Palikite savo komentarą