Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Kako uraditi extend klase koja se nalazi u nekom drugom folderu?

  • 4 odgovora
  • 3.234 pregleda

Najnovija ↓

Kako uraditi extend klase koja se nalazi u nekom drugom folderu? 11.01.2016. u 07:47 · pre 131 mesec
izmenjeno 1 put, poslednji put jelenanik 11.01.2016. u 12:13
  1. jelenanik11.01.2016. u 12:13zapis iz teksta poruke
#1
Pozdrav svima.

Prilično sam nova u pogledu OOP. Jasan mi je koncept nasleđivanja, znam kako da nasledim klasu koja je u istom folderu u kojem i klasa koja je nasleđuje, ali ne znam kako da nasledim klasu koja se nalazi u nekom drugom folderu.

Npr.

root_folder

folder1

controllers
models
neka_klasa_koja_treba_da_nasledi_drugu_klasu.php
views

folder2

controllers
models
neka_druga_klasa_koja_ce_naslediti_klasu_za_nasledjivanje.php
views

folder3

controllers
models
klasa_koju_treba_naslediti.php
views

Znači, moje pitanje je: Kako da mi klase iz fajlova "neka_klasa_koja_treba_da_nasledi_drugu_klasu.php" i "neka_druga_klasa_koja_ce_naslediti_klasu_za_nasledjivanje.php" naslede klasu iz fajla "klasa_koju_treba_naslediti.php"?

Hvala unapred.

P.S. Iz nekog razloga ne mogu lepo da napravim strukturu (da uvučem red, pa ispadne kao da su svi folderi u istom nivou). Dakle, u root-u se nalaze folderi: folder1, folder2 i folder3. U svakom od njih folderi controllers, models i views, a u odgovarajućem models folderu se nalaze pomenuti fajlovi.


Možete zaključati temu, snašla sam se.
Re: Kako uraditi extend klase koja se nalazi u nekom drugom folderu? 30.01.2016. u 15:16 · pre 130 meseci #4
Nije bitno u kom je folderu klasa, ako je ispravno inkludovana biće dostupna u globalnom scope-u i moći će da je nasledi nova klasa.

Ako koristiš neki framework obično imaš način da "elegantno" inkluduješ klase, da li preko ugrađene Loader klase ili preko php autoloadera. Ako radiš "klot" php, možeš ručno da inkluduješ, a možeš da praviš i svoju loader klasu, odnosno (preporučljivo) autoloader.
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: Kako uraditi extend klase koja se nalazi u nekom drugom folderu? 31.01.2016. u 13:01 · pre 130 meseci #5
jelenanik, ukoliko koristiš php 5.4 pa naviše, baci pogled i ovde -> php Traits

A evo i banalnog primera za korišćenje trait mehanizma, nema extends nigde ..
Mnogo lakši život od kad je ovo uključeno u igru.

Code (php):


<?php namespace
{

// Neki tamo fajl, negde.. imamo putanju do njega

     trait private_properties
     {
          private $path;
          private $file_;
          private $pack_;
     }

// Neki tamo drugi fajl, negde.. takođe imamo putanju do njega

     trait private_methods_uno
     {
          private function getFilePrivate()
          {
               if(is_file($this->path))
               $this->file_ = file_get_contents($this->path);
          }
     }

// I treći fajl, negde.. naravno, imamo putanju i do njega

     trait private_methods_due
     {
          private function putFilePrivate()
          {
               if(!is_string($this->file_))
                    die('Fajl verovatno i ne postoji ... ');
               else
               {
                    $this->pack_ = base64_encode($this->file_);
                    file_put_contents(("{$this->path}.bak"), $this->pack_, LOCK_EX);
                    $this->pack_ = null; $this->file_ = $this->pack_;
               }
          }
     }

/*
     Glavna klasa, (`final` je ovde radi kozmetike)
     pre nego što klasa dođe na red, treba priključiti (include/require_once , itd.. )
     potrebne "trejtove", logično.
*/


     final class opcodeToString
     {
          use
               private_properties,
               private_methods_uno,
               private_methods_due;

// KLJUČNA REČ - `use`
// U sklopu klase, priključuje `trait`
// Mimo klase, na samom početku skripte,
// služi za manipulaciju `namespace`-ova

          public function __construct($path)
          {
               $this->path = $path;
               $this->getFilePrivate();
          }

          public function putFile()
          {
               $this->putFilePrivate();
          }

     }

     $filepath = '/my/path/to/opcode.php';
     $ots = new opcodeToString($filepath);
     $ots->putFile();

}

 
Potpis
about:networking
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme