Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przekazanie zmiennej z klasy do funkcji
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Jak przekazać zmienną z klasy do funkcji?

W folderze classes mam klasę z takim kodem

Kod
class routClass {
...
   public function __construct() {
      ...
      define('NAME_CONTROLLER', $name_controller); // Jak inaczej przekazac zmienna do funkcji?
   }
}


W folderze functions mam funkcje
Kod
function writeData($value) {
    global $arrayData; // Czy funkcja z global $arrayData jest ok?
    $key = NAME_CONTROLLER;  // Jak inaczej przekazac zmienna do funkcji?
    $data = '';
    
    if (isset($arrayData[$key][$value])) {
        $data = $arrayData[$key][$value];
    }
    else {
        $data = 'Sorry value not found!';
    }
    
    echo $data;
}

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Malinaa
post
Post #2





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Klasę wywołuje w pliku init.php

spl_autoload_register(function($className){
include(...$className.'.php');
});

/* Autoload Class */
$rout = new routClass();

gdzie ładuję kontroler w zależności od adresu strony

// Include controller
require_once($path . $this->controller . '.php');


Przykładowy kontroler
Kod
class indexController extends frameworkClass {
    public function __construct() {
        $this->helper("application");
    }    
    public function index() {
        $this->view("index");
    }
}


$this->helper("application") wczytuje funkcje aplikacji - tu znajduje się funkcja, którą chcę napisać wspólną dla wszystkich kontrolerów (klas)

Nie mogę napisać tej funkcji jako metody w klasie, ponieważ musiałbym to samo powtarzać w każdym jednym kontrolerze.
Takie rozwiązanie byłoby gorsze od wstawienie w funkcji $key = NAME_CONTROLLER;
Z kolei po wstawieniu funkcji w frameworkClass jako metody nie będzie widoczna dla view() które wczytuje template index.php (kod html i php <- w template wywołana jest ta funkcja).

Wiem, że global nie jest pożądane (to taka ostateczność), bo nie do końca wiem jak przekazać poprawnie tablicę do funkcji,
która to jest wczytywana na stronie startowej poprzez require() i nie jest widoczna w pliku z funkcją po wpisaniu print_r($tablica) = null
natomiast global $tablica i dane z tablicy są w funkcji?

Coś takiego
function writeData($value, $arrayData=array()) {
// echo or return data
}
nie działa? Dopiero z global $arrayData można tworzyć funkcje z użyciem parametrów tablicy.

Dałem echo $wynik (zamiast return) ponieważ nie trzeba za każdym razem przed wyświetleniem wyniku funkcji pisać echo writeData();
Czy naprawdę musi (powinno) być return $wynik i za każdym razem trzeba dopisywać echo writeData() kiedy w tym przypadku samo writeData() jest prostsze?

Ten post edytował Malinaa 17.12.2020, 21:18:01
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 08:53