Pereiti prie turinio

[PHP] Vienos klasės panaudojimas kitoje klasėje


Rekomenduojami pranešimai

Sveiki,

 

taigi turiu dvi klases. Viena skirta MySQL apdorojimui (automatinis prisijungimas prie db, querių skaičiavimas ir same shit..).

 

O kita klasė skirta skaičiavimams, o visi skaičiavimai imami iš SQL. Todėl norėčiau, mysql klasę panaudot skaičiavimų klasėje.

 

Abi klasės skirtinguose failuose, į vieną surašyt nenoriu, nes kelčiau bereikalingą apkrovą ir tiek.

 

Gal bus patarimų kaip vieną klasę panaudot kitoje klasėje? Nerašant vienos didelės bereikalingos klasės.

 

Ačiū.

Redagavo Voxas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš tokiu principu darau, tik dar + viena klasė load'inimui objekto:

 


...
private $input = null;

public function __construct ()
{
require_once ( 'input_class.php' );
$this -> input = & new input ();
}
...

 

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/wi/class/def.php on line 14

 

Tavo variantas nelabai nori veikt. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš tokiu principu darau, tik dar + viena klasė load'inimui objekto:

 


...
private $input = null;

public function __construct ()
{
require_once ( 'input_class.php' );
$this -> input = & new input ();
}
...

 

 

Nuo 5.3 PHP versijos toks būdas nebegalimas. 

 

 http://php.net/manua....deprecated.php

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Reikšmės adreso grąžinimas - taip, nebegalimas. Tačiau nenaudojant "by reference" - viskas tvarkingai veikia.

 

Taip, labai jau netiksliai išsireiškiau.

 

 

O gal kartais naudojant paveldėjimą, įmanoma net tris klases į vieną sujungti?

 

Naudojant paveldėjimą gali apjunginėti tiek klasių kiek reikia, tokiu būdu:

 

class B extends A {...};

class C extends A {...}; 

 

Bet jei reikia daryti kažką panašaus į:

 

class B extends A {...};

class C extends B {...};

 

Tai šitaip nesigaus. Tokiu atveju siūlau naudoti __call() metodą:

 

class B {
    public function method_from_b($s) {
        echo $s;
    }
}

class C {
    public function method_from_c($s) {
        echo $s;
    }
}

class A extends B
{
  private $c;

   public function __construct()
  {
    $this->c = new C;
  }

   public function __call($method, $args)
  {
    $this->c->$method($args[0]);
  }
}

  $a = new A;
$a->method_from_b("abc");
$a->method_from_c("def");

 

paskutinis kodas iš stackoverflow.com

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...