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.

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