konto usunięte

Temat: HWDP

W tym wątku proponuję wylewać żółć php-owej frustracji ;)
(P w temacie oczywiście od PHP)

Wpis numer 1:
Zgadnijcie jaki będzie wynik poniższej linijki kodu:
<?php
// $null - niezainicjowana zmienna, czyli null
echo 10 + $null->jakas_tam_zmienna;

..odpowiedź: 10 !!!
..i szukaj igły w stogu siania jak przez przypadek pomylisz nazwę zmiennej w skrypcie :/

konto usunięte

Temat: HWDP

Łukasz Bandzarewicz:
Zgadnijcie jaki będzie wynik poniższej linijki kodu:
<?php
// $null - niezainicjowana zmienna, czyli null
echo 10 + $null->jakas_tam_zmienna;
..odpowiedź: 10 !!!

Nieprawda, bo tylko: 10

:)

PHP i tak jest na tyle uprzejmy, że niezadeklarowanym zmiennym daje "nic" ... ANSI C daje "cokolwiek" czyli "coś losowego" :) A potem się dziw, że program znienacka robi core dump ...Krzysztof P. edytował(a) ten post dnia 08.08.08 o godzinie 22:31

konto usunięte

Temat: HWDP

Krzysztof P.:

PHP i tak jest na tyle uprzejmy, że niezadeklarowanym zmiennym daje "nic" ... ANSI C daje "cokolwiek" czyli "coś losowego" :) A potem się dziw, że program znienacka robi core dump ...Krzysztof P. edytował(a) ten post dnia 08.08.08 o godzinie 22:31

Akurat w przypadku ANSI C potrafię wybaczyć takie zachowanie. Twoje "cokolwiek" tak naprawdę nie jest czymś losowym, tylko wartością pamięci, która znajduje się w zaalokowanym miejscu. Ze względów wydajnościowych (bo w sumie jakich innych) po zaalokowaniu zmiennej przydzielona jej pamięć nie jest czyszczona (wypełniania zerami).. bo po co? ;)
..ale php to zupełnie inna bajka, w rozważanym przypadku próbuję się dostać do zmiennej publicznej obiektu, który nie istnieje. Ruby w takich przypadkach jest na tyle uprzejmy by w takich wyświetlić stosowną informację.

konto usunięte

Temat: HWDP

Łukasz Bandzarewicz:
Twoje "cokolwiek" tak naprawdę nie jest czymś losowym, tylko wartością pamięci, która znajduje się w zaalokowanym miejscu.

To nie "moje" ... to standard. Kto tego nie wie ten kiep z C :)
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: HWDP

jak się nie zna nazw zmiennych to trzeba sobie wlaczyc pokazywanie notice'ow i po klopocie :)
Mariusz Przybylski

Mariusz Przybylski Dynamite Studio

Temat: HWDP

przy dodawaniu nulla rzutuje na inta i wychodzi mu zero, naturalne zachowanie php, naturalne zachowanie programisty - zanim oddajemy projekt wyrzucamy wszystkie błędy na ekran (E_NOTICE też).

konto usunięte

Temat: HWDP

Michał `Bełdzio` Ławicki:
jak się nie zna nazw zmiennych to trzeba sobie wlaczyc pokazywanie notice'ow i po klopocie :)

Racja, w tym przypadku zwracam honor php ;)
Notice miałem wyłączone, bowiem bardzo dużo błędów tego rodzaju generuje phpDoctrine :/
ehhh..
Piotr Kamiński

Piotr Kamiński programista i
sieciowy wytwarzacz

Temat: HWDP

empty('0'); //true

i jeszcze mnostwo malych bugow na ktore sie co troche trafia...
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: HWDP

Piotr Kamiński:
empty('0'); //true

i jeszcze mnostwo malych bugow na ktore sie co troche trafia...

ile mi to kiedyś krwi napsuło ;-)
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: HWDP

nie ma to jak dynamiczne typowanie :-))) ale z drugiej strony trzeba przewidywac wartosci zmiennych :P

konto usunięte

Temat: HWDP

Kiedyś pisałem testy jednostkowe do modelów aplikacji. Chciałem zaimplementować coś na wzór fixtures z Ruby On Rails - dane testowe do bazy danych wczytywane z plików yaml. phpDoctrine ma metody pozwalające na wgrywanie danych z yaml do bazy, więc z pozoru nie było większego problemu.
Niestety okazało się, że zagnieżdżanie kodu php w plikach yaml nie jest wcale takie proste :/

Po kilku godzinach prób i błędów okazało się, że kod:
Store_Product_Item:
Store_Product_2:
sku: philippi_260010
name: Klocki
categories: [Store_Category_Decorations1_1, Store_Category_Kids1_1_4]
price: 60.50
is_present: true
not_available_to: <?= date(DB_DATE, strtotime('+1 week')) ?>

Musiałem zmienić na:
Store_Product_Item:
Store_Product_2:
sku: philippi_260010
name: Klocki
categories: [Store_Category_Decorations1_1, Store_Category_Kids1_1_4]
price: 60.50
is_present: true
not_available_to: <?= date(DB_DATE, strtotime('+1 week')) ?>

..konia z rzędem dla tego, komu uda się odnaleźć różnicę. ;)

Odpowiedź: okazało się, że po '?>' trzeba umieszczać dodatkową spację, inaczej PHP następną linię umieści w tym samym wierszu :/
Pytania?
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: HWDP

Łukasz Bandzarewicz:
Odpowiedź: okazało się, że po '?>' trzeba umieszczać dodatkową spację, inaczej PHP następną linię umieści w tym samym wierszu :/
Pytania?

Ja używam PHP w szablonach i to zawsze psuło mi formatowanie html. Od tego czasu spacja leci automatycznie :)
edit:
GL mogło by udostępnić znacznik "code", bo czytanie kodu tutaj to masakra.Alan B. edytował(a) ten post dnia 09.08.08 o godzinie 20:47
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: HWDP

Ze swojego doświadczenia powiem tylko, że wkurza mnie ukrywanie błędów przez @ - nie powinno tego być.

Temat: HWDP

Przykład sprzed paru dni. Chce sprawdzić czy zmienna jest intem.
Kod if($zmienna == (int)$zmienna) nie działał.
Działa if($zmienna == (string)(int)$zmienna).
Wojciech Gomoła

Wojciech Gomoła Now is my Time

Temat: HWDP

Wojciech Małota:
Przykład sprzed paru dni. Chce sprawdzić czy zmienna jest intem.
Kod if($zmienna == (int)$zmienna) nie działał.
Działa if($zmienna == (string)(int)$zmienna).

Zawsze mi się wydawało że do tego służy is_int(); :| Ale ja nie jestem php-owcem:/Wojciech Gomoła edytował(a) ten post dnia 09.08.08 o godzinie 22:38
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: HWDP

Wojciech Małota:
Przykład sprzed paru dni. Chce sprawdzić czy zmienna jest intem.
Kod if($zmienna == (int)$zmienna) nie działał.
Działa if($zmienna == (string)(int)$zmienna).

u mnie działa.Alan B. edytował(a) ten post dnia 09.08.08 o godzinie 23:36
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: HWDP

Wojciech Małota:
Przykład sprzed paru dni. Chce sprawdzić czy zmienna jest intem.
Kod if($zmienna == (int)$zmienna) nie działał.
Działa if($zmienna == (string)(int)$zmienna).
ale wymyslacie :) powyzszy warunek dziala dobrze why? == jest rowne czyli 0 == false ale juz 0 !== false :) jak sie chce sprawdzac typy to sie uzywa ===

btw kto uzywa takiego hmmm dziwnego sposobu do spr typu? is_int? ctype_digit( ) ? filter_input( )?

no wlasnie po grzyba w php jest po kilka funkcji ktore robia to samo?

Temat: HWDP

btw kto uzywa takiego hmmm dziwnego sposobu do spr typu? is_int?

na is_int już się kiedyś przejechałem.

konto usunięte

Temat: HWDP

Wojciech Małota:
btw kto uzywa takiego hmmm dziwnego sposobu do spr typu? is_int?

na is_int już się kiedyś przejechałem.

No to dawaj, to jest wątek temu poświęcony ;)
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: HWDP

Michał `Bełdzio` Ławicki:
btw kto uzywa takiego hmmm dziwnego sposobu do spr typu? is_int? ctype_digit( ) ? filter_input( )?

no wlasnie po grzyba w php jest po kilka funkcji ktore robia to samo?

Ale kolega nie sprawdza typu, tylko czy to co reprezentuje zmienna jest liczba całkowitą, a to jest różnica - przynajmniej to jest pierwsze co się narzuca.

$string = "wytnij liczbę 20"; // najprostszy przykład
$zmienna = substr($string, 13);
if (is_int($zmienna)) {
print '(is_int) to jest int' . PHP_EOL;
};
if ($zmienna == (int) $zmienna) {
print '(==) to jest int' . PHP_EOL;
};Alan B. edytował(a) ten post dnia 10.08.08 o godzinie 10:09

Podobne tematy


Następna dyskusja:

JP czyli HWDP




Wyślij zaproszenie do