2006-05-14 Eilinė amerika (PHP)

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 Responses to “Eilinė amerika (PHP)”

  1. Incognito-R rašė:

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

  2. doU rašė:

    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…

  3. Emilis rašė:

    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.

  4. Povilas rašė:

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

  5. Povilas rašė:

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

  6. nerka rašė:

    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

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

My English blog about programming.