Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obiekty
Forum PHP.pl > Forum > Przedszkole
tomi1985
Elo,

da rade aby zmienną przekazywaną metodą GET lub POST zapisać do classy, obiektu?

Kod
    public $titleEmpty = '$_GET[i]';


ten kodzik nie działa... także nie wiem czy jest takie cos mozliwe, jesli tak to w jaki sposób
markonix
Utwórz metodę / konstruktor i przekaż jako argument w wywołaniu tej metody / konstruktora.
3 opcja to bezpośrednie przypisanie
  1. $objekt->titleEmpty = $_GET['i'];
tomi1985
dzieki smile.gif
Wazniak96
Tablice takiego typu jak $_GET czy $_POST są tablicami superglobalnymi czyli możesz ich użyć w dowolnym miejscu kodu. smile.gif
markonix
Cytat(Wazniak96 @ 23.03.2013, 20:22:03 ) *
Tablice takiego typu jak $_GET czy $_POST są tablicami superglobalnymi czyli możesz ich użyć w dowolnym miejscu kodu. smile.gif

W dużej części przypadków elastyczniej (i bardziej poprawnie) jest je przekazywać przez parametry, dzięki czemu nie ograniczasz metody tylko do jednego źródła danych.
tomi1985
W takim razie czegoś nie rozumiem...

Kod
$i = $_GET['i'];

class Naglowek {// Nagłówek strony
......

if ($block == 11){    //Nadawanie tytułu noclegom w miejscowości lub w woj.            
                echo '<title>Noclegi '.$i.' '.$this->titleEmpty2.'</title>';
                break;
            }


Dodam że warunek jest spełniony i w <title> przypisuje się wszystko prócz $ i
Wazniak96
$i już jest zwykłą zmienną. Musisz ją wrzucić do metody za pomocą global, o tak:
  1. public jakas_metoda(){
  2. global $i; //możesz po przecinku wrzucać inne zmienne np global $i, $e; itp
  3. echo $i;
  4. }


Jeśli w swoim kodzie zamiast zmiennej $i wstawisz $_GET['i'] wszystko już się wyświetli.

Jednak popieram to co napisał Bizo i radzę, żebyś się temu bardziej przyjrzał.
tomi1985
ok, dzieki za pomoc smile.gif

wrzucilem poprzez argument.

Tylko co zrobić ja np. w jednej metodzie będę potrzebować 5 zmiennych

Kod
public function test ($i, $a,...) {
}


tak się da ?
pitu
Tak możesz przekazać wiele zmiennych. Lepszym rozwiązaniem jednak było by utworzenie z nich tablicy i przekazanie jej jako parametr.
Wazniak96
Jak najbardziej smile.gif
Dodatkowo gdy np. nie będziesz potrzebował zmiany wszystkich argumentów możesz zrobić tak:

  1. public function jakas_metoda($a, $b, $c=1)
  2. {....


A później wywołać funkcję poprzez
  1. $naglowek->jakas_metoda(1, 2);


W takim przypadku analogicznie zmienna $c na te użycie przybierze wartość 1 ;p
tomi1985
Hej,
mam dośc niecodzienne pytanie...

co zrobić aby po wejsciu w kod strony przez przegladarke np. FF (ctrl+u) przy pisaniu obiektowym ...kod tak ładnie się wyświetlał ?

mam np. taki kod

Kod
if($warunek == "noclegi/Morze/"){ //Generowanie Słów Kluczowych po url
                    echo '<meta name="keywords" content="'.$this->SlowaKluczowe[2].'">';
                    echo '<meta name="description" content="'.$this->ZdaniaKlucze[2].'">';
                }


i z regóły wszystko idzie w jedej linii.. a jak juz przejdzie na kolejną to jest bardzo duzy lewy margines ;/
markonix
1. Ortografia...

2. Co ten przykładowy kod robi tak z ciekawości?

3. To jak piszesz, obiektowo czy strukturalnie nie ma wpływu na marginesy w źródle strony..
Pawel_W
Cytat(Wazniak96 @ 23.03.2013, 20:32:43 ) *
$i już jest zwykłą zmienną. Musisz ją wrzucić do metody za pomocą global

stosowanie global to ZŁO i nigdy nie należy tego sugerować smile.gif
tomi1985
ten kodzik ustawia slowa kluczowe i caly frazy w zaleznosci od podstrony serwisu....

Wazniak96
Cytat(Pawel_W @ 24.03.2013, 01:04:21 ) *
stosowanie global to ZŁO i nigdy nie należy tego sugerować smile.gif

Mogłbyś rozwinąć swoją wypowiedź i powiedzieć dlaczego? smile.gif
tomi1985
to powie mi ktos jak to zmienic aby w źrodle strony bylo przejrzyscie ?

bo juz sam nie wiem jak to zrobic...

jak tworzyłem stronki strukturowo to bylo wszystko ok... ale jak zaczałem obiektowo się bawić... to czesc kodu w zrodle mam w jednej linii... a chcialbym aby kazda czesc kodu byla w nowej linii
Pawel_W
Cytat(Wazniak96 @ 24.03.2013, 10:47:38 ) *
Mogłbyś rozwinąć swoją wypowiedź i powiedzieć dlaczego? smile.gif

cytat z http://pl.wikibooks.org/wiki/PHP/Funkcje
Cytat
Uwaga!
Używanie global w swoich funkcjach jest obecnie uznawane za bardzo złą praktykę programistyczną z powodu wielu problemów z testowaniem i przewidywalnością działania tak napisanych programów.
jasin
Cytat(tomi1985 @ 24.03.2013, 11:00:07 ) *
to powie mi ktos jak to zmienic aby w źrodle strony bylo przejrzyscie ?

bo juz sam nie wiem jak to zrobic...

jak tworzyłem stronki strukturowo to bylo wszystko ok... ale jak zaczałem obiektowo się bawić... to czesc kodu w zrodle mam w jednej linii... a chcialbym aby kazda czesc kodu byla w nowej linii


Najlepiej odzielić warstwę prezentacji od reszty kodu (MVC było by idealne). Może jeśli zaczynasz z OOP to warto by zapoznać się z jakimś systemem templatek (proponuję TWIG) i wówczas dziargasz kod HTML-owy w templatkach, do których później przekazujesz odpowiednie dane z przygotowane w klasach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.