![]() |
![]() |
![]()
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; } |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 08:53 |