![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pisząc klase natrafiłem chyba na błąd. Odpalcie sobie poniższy skrypt i napiszcie dlaczego php wyświetla go poprawnie? Przecież prywatna zmienna to _zmienna a nie zmienna (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ! A skrypt działa poprawnie...
Ten post edytował J4r0d 6.01.2007, 07:26:16 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
To nie błąd. Zważ, że w php możesz tworzyć składowe dynamicznie (publiczne). Zatem masz po prostu dwie zmienne - $_zmienna i $zmienna : )
Pozdrawiam, a życzenia w hydeparku : D |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
To nie błąd. Zważ, że w php możesz tworzyć składowe dynamicznie (publiczne). Zatem masz po prostu dwie zmienne - $_zmienna i $zmienna : ) Czyli jak spróbuję przypisać wartość do nie istniejącej zmiennej, to zostanie on utworzona i będzie publiczna? To jest totalna głupota.. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 3 Dołączył: 29.07.2005 Skąd: Szczebrzeszyn Ostrzeżenie: (0%) ![]() ![]() |
Czyli jak spróbuję przypisać wartość do nie istniejącej zmiennej, to zostanie on utworzona i będzie publiczna? To jest totalna głupota.. to uzywaj metod __set i __get i po sprawie. a glupota to nie jest, za duzo problemow by bylo z dzialaniem skryptow z php4 pod php5 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
to uzywaj metod __set i __get i po sprawie. a glupota to nie jest, za duzo problemow by bylo z dzialaniem skryptow z php4 pod php5 To bym musiał napisać metode __set() tylko po to, żeby wyświetlać errora, że próbowano zapisać do nie istniejącej zmiennej. Co do działania skryptów pisanych pod php4 to dla mnie php4 nie istnieje. Zresztą pisanie w php4 "obiektowo" też było głupotą. |
|
|
![]()
Post
#6
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
@hwao: rozumiem, tylko jak popisze w innym języku to normalnie trafia mnie że php pozwala na takie głupoty.
Poza tym kiedyś poruszałem temat http://forum.php.pl/index.php?showtopic=59021&hl= na który niestety nikt nie odpowiedział. Skoro w php nie deklarjemy typu zmiennej to dlaczego w logach apacha po pewnym czasie mam dosyć dużo wpisów w stylu "została użyta zmienna, która nie została zadeklarowana.." :/ Ten post edytował J4r0d 1.01.2007, 14:56:59 |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat tylko jak popisze w innym języku to normalnie trafia mnie że php pozwala na takie głupoty. Jakim? C++, JAva C#? Ok, ze skryptowych (ktore znam) Ruby sie czepia niezdefiniowanych zmiennych instancji. Cytat Skoro w php nie deklarjemy typu zmiennej to dlaczego w logach apacha po pewnym czasie mam dosyć dużo wpisów w stylu "została użyta zmienna, która nie została zadeklarowana.." :/ NIe typ zmiennej, ale sama zmienna. I tyczy sie to zmiennych globalnych i lokalnych, a nie zmiennych instancji (w obiektach) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jakim? C++, JAva C#? Ok, ze skryptowych (ktore znam) Ruby sie czepia niezdefiniowanych zmiennych instancji. NIe typ zmiennej, ale sama zmienna. I tyczy sie to zmiennych globalnych i lokalnych, a nie zmiennych instancji (w obiektach) Nie chodzi mi o niezdefiniowane zmienne instancji. Ogólnie o niezdefiniowane. A swoją drogą nie sprawdzałem czy w C++/Javie będzie można zapisać do zmiennej instancji, której nie ma. To wyszło przez przypadek jak skorzystałem z podpowiadania składni eclipse - miałem podobne zmienne.. Muszę wyłączyć logowanie i będzie spokój bo apach potrafi zapchać dysk.. |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Muszę wyłączyć logowanie i będzie spokój bo apach potrafi zapchać dysk.. Jesli zatkam uszy na negatywna krytyke to wtedy bede idealny. Nie tedy droga, nie chodzi o ukrywanie widocznych (tych ktore wiesz czemu sie pojawiaja) bledow tylko o ich poprawienie. Cytat Nie chodzi mi o niezdefiniowane zmienne instancji. Ogólnie o niezdefiniowane. Ogolnie to sa to zupelnie rozne przypadki: $aa = 3; // da ci errora a $this->aa = 3; // juz nie Cytat A swoją drogą nie sprawdzałem czy w C++/Javie będzie można zapisać do zmiennej instancji, której nie ma. Ciekawe jak, przeciez to sie nawet nie skompiluje. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jesli zatkam uszy na negatywna krytyke to wtedy bede idealny. Nie tedy droga, nie chodzi o ukrywanie widocznych (tych ktore wiesz czemu sie pojawiaja) bledow tylko o ich poprawienie. Rozumiem. Tylko, że w tym projekcie (był pisany strukturalnie) mógłbym poprawić. Tylko, że: - tablice zdefiniuje jako $tablica = array(); i nie będzie wywalać błędów.. A jak z ze zmiennymi typu string czy integer lub float? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 3 Dołączył: 4.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
php sam rozronia typ danych przypisanych do zmiennej i formatuje ja odpowiedznio wiec sie tym nie musisz martwic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
php sam rozronia typ danych przypisanych do zmiennej i formatuje ja odpowiedznio wiec sie tym nie musisz martwic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie rozumiesz o co mi chodzi albo ja trochę zamotałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czyli każdą zmienną (bez względu na jej typ) zanim ją użyje muszę ją zapisać jako np:
Dokładnie w logach apacha mam takie wpisy: Cytat Undefined variable: PHP_SELF in usr/local/apache/htdocs/www/index.php on line 358 Z PHP_SELF mam mnóstwo wpisów - z każdego skryptu. Pojawiają się jeszcze wpisy na temat sesji: Cytat A session had already been started - ignoring session_start() Startujemy sesje i jak nam wiadomo, jeśli sesja jest wystartowana to jest kontynuowana a nie tworzona od nowa - więc dlaczego sypie errory do pliku? Ten post edytował J4r0d 1.01.2007, 19:33:41 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 3 Dołączył: 4.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie to Ty mnie nie zrozumiales (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) albo obaj sie nie rozumimy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) chodzilo mi oto ze w momencie robienia jakis operacji ktore zwracaja jakis wynik (string, int, double, etc...) to w tedy php formatuje je do odpowiedniego typu i nie musisz ich deklarowac jak to przedstawiles w swoim przykladzie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie to Ty mnie nie zrozumiales (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) albo obaj sie nie rozumimy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) chodzilo mi oto ze w momencie robienia jakis operacji ktore zwracaja jakis wynik (string, int, double, etc...) to w tedy php formatuje je do odpowiedniego typu i nie musisz ich deklarowac jak to przedstawiles w swoim przykladzie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ok to rozumiem. Mi chodzi o to, że w C++ czy innym języku zanim użyjesz w programie zmiennej, musisz ją zadeklarować bo program się nie skompiluje. php tego nie wymaga. Możesz w dowolnym momencie tworzyć zmienne. Ale jak coś takiego zrobisz to apache wrzuca mi do error_log apacha błędy w stylu: Cytat Undefined variable: tablica1 in usr/local/apache/htdocs/www/index.php on line 358
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 472 Pomógł: 7 Dołączył: 7.12.2005 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Cytat Startujemy sesje i jak nam wiadomo, jeśli sesja jest wystartowana to jest kontynuowana a nie tworzona od nowa - więc dlaczego sypie errory do pliku? To są akurat notice'y. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Zapobiec można definiując start sesji tak:
Cytat $aa = 3; // da ci errora Taka definicja nie daje przecież errora. Czy ja się mylę?Sprawdzałem również definicje zmiennych poprzez (typ)$var; - również wywala Notice'a. EDIT: A co do $_zmienna i $zmienna - php zaleca dobrym nawykiem zapisywanie zmiennych prywatnych poprzedzonych podkreślnikiem . Ten post edytował cadavre 1.01.2007, 19:53:41 |
|
|
![]()
Post
#17
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
[quoet]Taka definicja nie daje przecież errora. Czy ja się mylę?[/quote]
Ajj, namieszalem. Moj blad. Nie daje. Myslalem o czym innym co innego zapisalem. Chodzilo o to:
Nie chodzi o definicje typu zmiennej tylko o jej deklaracje przed uzyciem, czyli zamiast
tak:
PHP_SELF -- przeciez to od dawna nie istnieje |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
$_SERVER[ 'PHP_SELF' ] istnieje, PHP_SELF nie
php Notice: Use of undefined constant PHP_SELF - assumed 'PHP_SELF' in ..... manual: Cytat $_SERVER Note: Introduced in 4.1.0. In earlier versions, use $HTTP_SERVER_VARS. a sama stala PHP_SELF to juz nie wiem kiedy zostala usunieta. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#21
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
To czemu mowisz ze PHP_SELF dziala.
|
|
|
![]()
Post
#22
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
subtelnie proponuje autorowi zmienic mylną nazwę wątku na cos co bardziej odpowiada prowadzonej dyskusji.
|
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
To czemu mowisz ze PHP_SELF dziala. Miałem na myśli $_SERVER['PHP_SELF'] i myślałem, że Ty też o tym piszesz. No albo inna rzecz. Mam w skrypcie taki zapis:
Jeśli nie przekazano w urlu id to apache w logach wali błędy "Undefined variable". W ciągu miesiąca pliczek ma 2GB. Wrzuciłem do crona kasowanie logów każdego dnia. Wiem, że moż sprawdzać czy zmienna istnieje i później ją intvalować ale po co? Przecież jak jej nie ma to się nic nie stanie bo później mam odpowiedni warunek, który to sprawdza i w zależności od tego podejmuje odpowiednie zadania. Nie rozumiem po co apache/php wali to do logów.. |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 1 Dołączył: 11.02.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam! mam problem ze zmiennymi.. chodzi o to ze w funkcji chce dodawac nowe pola... przy wywolaniu z funkjci i dodawac je poprzez arry zmieniajac indkesy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i sytuacja jest taka.. ze jak zrobie np tak tablica['jaka']="blabla" to po za clasa ja widac ale jak zrobie jeszcze raz tak tablica['jaka2']="222" to ta poprzednia mi znika :/ i przy wyswietleniu nic nie wyswietla (maslo maslane) :/
a to dziala!!![/php] jak zrobie tak:
Jak mam zadeklarowac ta tabice?? zeby mi w klasie dodawalo nowe indeksy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) JUZ sie dowiedzialem... arrau usuwa aktualna tablice (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował sanchoo 18.03.2007, 17:55:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 21:52 |