Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 578 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: 578 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 |
|
|
|
Malinaa [PHP]Przekazanie zmiennej z klasy do funkcji 16.12.2020, 18:27:41
viking A co ma wspólnego ta klasa z funkcją? Global i inn... 16.12.2020, 20:20:24
gino po pierwsze nazwiennictwo: funkcja w klasie to met... 17.12.2020, 13:38:20
viking Skoro ma być wspólna dla wszystkich a wszystkie za... 18.12.2020, 05:56:58
Malinaa Tak, wszystkie dziedziczą po frameworkClass i tu c... 18.12.2020, 20:57:35
viking Rzucić to w diabły i użyć Symfony albo Laravela N... 18.12.2020, 21:17:27
gino A tak już abstrachując od tego co radzi Viking a d... 18.12.2020, 21:54:10
Malinaa Cytat(viking @ 18.12.2020, 21:17:27 )... 19.12.2020, 11:00:15
viking Stykasz się z zasięgiem zmiennych wewnątrz funkcji... 19.12.2020, 11:52:17
gino CytatKłopot, że używałem w skryptach zwykle tylko ... 19.12.2020, 12:56:48
Malinaa Cytat(viking @ 19.12.2020, 11:52:17 )... 28.12.2020, 19:52:07
gino CytatWymienione frameworki są ok, ale to "kro... 29.12.2020, 07:39:15
viking Aktualnie mało kto pisze własny FW, korzysta się a... 29.12.2020, 10:33:26
Malinaa Cytat(gino @ 29.12.2020, 07:39:15 ) T... 29.12.2020, 17:01:57
viking Jeśli masz tylko parę stron statycznych to lepszym... 29.12.2020, 18:27:56
Malinaa "Statyczne" w cudzysłowie, wystarczy dod... 29.12.2020, 19:19:43 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 21:08 |