Przekazanie zmiennej w OOP

0

Witajcie chciałbym przekazać zmienną public pomiędzy plikami
plik index

<?php

require 'file.php';

$file = new File();

plik file

<?php

class File {
    
    public $error; 
    
    function __construct() {
      
        $this->checkFile();
    }
    
    public function checkFile(){
        
        $file = 'fisle.php';
        
        if(file_exists($file)){
            
            echo "Available";
        } else {
            
            require 'error.php';
                $error = new Errors();
                $this->error = '404';
                
                return false;
        }
    }
    
}

plik error

<?php

class Errors extends File{
    
    function __construct() {

        echo 'error' . $this->error;
        
    }
}

Gdy zmienną public od razu zainicjuję jako np public $error='404' wówczas ładnie mi się wyświetla w pliku Error.php natomiast jak nadam zmiennej $error wartość dopiero po zainicjowaniu obiektu Errors() wówczas nie zostaje ona przekazana do pliku error.php. Jak to ominąć uczę się oop także proszę o wyrozumiałość.

0
Poaq napisał(a):

Zacznij od uzywania composera i autoloadingu: https://getcomposer.org/doc/01-basic-usage.md
oraz http://php.net/manual/en/language.namespaces.importing.php

Znasz dobrą dokumentację po polsku lub książkę??

0

pisząc o zmiennej masz na myśli tak naprawdę pole klasy File?

0
$error = new Errors(); // function __construct() { echo 'error' . $this->error; }
$this->error = '404';

Najpierw wyświetlasz zmienną, potem ją inicjujesz.
Mógłbyś zrobić tak

$error = new Error(404);

Wtedy musiałbyś do __construct() w Error dodać parametr

class Error {
    public $error;

    function __construct($error) {
        $this->error = $error;
    }
}
0
TomRiddle napisał(a):
$error = new Errors(); // function __construct() { echo 'error' . $this->error; }
$this->error = '404';

Najpierw wyświetlasz zmienną, potem ją inicjujesz.
Mógłbyś zrobić tak

$error = new Error(404);

Wtedy musiałbyś do __construct() w Error dodać parametr

class Error {
    public $error;

    function __construct($error) {
        $this->error = $error;
    }
}

Tak faktycznie to działało, to chyba była moja pierwsza z myśli jednak chodzi mi o coś innego. W funkcji "public function checkFile()" sprawdzam czy plik istnieje gdy plik nie istnieje ustaw zmienną **public $error = true; ** wówczas ta zmienna powinna z docelowego "false" zmienić się na "true". Wówczas w pliku error.php

<?php

class Errors extends File{
    
    function __construct() {
        
        var_dump($this->error);
        
       if($this->error === true){ 
           
        $this->set404();  
       } else {
           
           echo "UnKnow Error";
       }
    }
    
    
    public function set404(){
        
        echo 'Error: ' . $this->errorCode[1];
        
    }
}

Wybierana jest w zależności od błędu konkretna funkcja. Nie wiem jak $error = false; zmienić na error = true aby była ona widoczna jako true w pliku error. Wiem mógłbym użyć $_SESSION lub ewentualnie wpisać do pliku ale nie o to chodzi.

0

w konstruktorze tworzysz obiekt? Skąd dopiero co utworzony obiekt ma mieć ustawione jakieś pola? no chyba że inicjalizujesz je jakąś wartością podczas deklaracji tak jak sam napisałeś

1 użytkowników online, w tym zalogowanych: 0, gości: 1