Article View: pl.comp.lang.python
Article #26563Re: python vs php - potrzebne argumenty
From: Jaroslaw Zabiello
Date: Tue, 03 Nov 2009 15:40
Date: Tue, 03 Nov 2009 15:40
47 lines
3444 bytes
3444 bytes
On Mon, 02 Nov 2009 23:56:11 -0000, Marcin Nowak
<marcin.j.nowak@gmail.com> wrote:
> On Oct 30, 9:16 am, pakalk <pak...@gmail.com> wrote:
>> On 30 Paź, 08:56, Marek Wywiał <onj...@gmail.com> wrote:
>
>> > 'obsługa' dat jest cudowna, wystawmy sobie fakturkę
>> > <?php
>> > $t = '2003/02/30';
>> > var_dump(strtotime($t));
>>
>> > radość księgowej - bezcenna
>>
>> a co wychodzi? Moze format nie taki jak obslugiwany? Co sie wtedy
>> dziwic?
>
> po prostu nie ma 30 lutego. z ciekawosci sprawdz wynik.
var_dump(strtotime('2003/02/32')); # => false
echo strftime("%Y/%m/%d", (strtotime('2003/02/32'))); # 1970/01/01
Nieprzewidywalność i zero intuicyjności to najwidocznie integralna cecha
pehapa. W tym wypadku bezmyślnie zakłada że każdy miesiąc może mieć do 31
dni. Z drugiej strony rozpoznaje lata przestępne. Rok 2003 luty miał 29
dni. PHP po swojemu sobie to interpretuje, więc 2003-02-30 to dla niego to
samo co 2003-03-01. Raczej mało kto wpadnie na to, że coś takiego się może
stać. Więc trudno taki błąd wyłapać. Ani wyjątku ani warninga, ani notice,
kompletnie nic. Faktycznie księgowa się może zdziwić. Nie tylko jak
uważam, że PHP nie nadaje się do poważnych zastosowań. W nim roi się od
takiego szeregu nonsensów.
Dla odmiany, jak do problemu podchodzi Ruby:
require 'date'
Date.strptime('2003/02/29', '%Y/%m/%d') # => wyjątek ArgumentError:
invalid date
Date.strptime('2003/02/28', '%Y/%m/%d') # => => #<Date:
4905397/2,0,2299161>
Zła data jest złą datą i już. Proste i logiczne. Wyrzuca wyjątek więc
można to gdzieś wyłapać w wyższej warstwie. Nic się nie prześliźnie. W PHP
bardzo łatwo przeoczyć mnostwo błędów. Nawet kopanie w logach nie
gwarantuje (w powyższyzm przypadku nie ma żadnego warninga). To język dla
masochisty.
--
JZ http://blog.zabiello.com
Technical Details
Message-ID:
<op.u2tsh4k3eaqjf2@mydot.ftpviewlocal.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailReferences:
<h83in7$rl3$1@inews.gazeta.pl> <h8447e$mg9$1@inews.gazeta.pl> <6a8e97cb-add7-450a-b7f2-f16ecc3cd0f6@y23g2000yqd.googlegroups.com> <6a691836-80db-4b66-bc41-f3c15e6782f7@v36g2000yqv.googlegroups.com> <6e26a02f-20fa-4a82-a722-9fbf78f0ef29@z41g2000yqz.googlegroups.com> <hcc9nt$eqr$1@news.lublin.pl> <f03c49b0-651b-4afa-ad73-db8dde63fdef@p35g2000yqh.googlegroups.com> <hccvvt$u0t$1@news.lublin.pl> <ac46bc62-a3ee-40a1-ac5d-860be3029272@z41g2000yqz.googlegroups.com> <hcd7ck$3a6$1@news.lublin.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <21c2c0bd-464f-45b2-a3ce-449c0412d48c@b2g2000yqi.googlegroups.com> <ad429fa2-5c6d-47a8-8337-1dafcd18c0b9@a31g2000yqn.googlegroups.com> <858f3466-5bdd-4c10-baa1-974089ef29ba@s31g2000yqs.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: "Jaroslaw Zabiello" <usenet@onet.eu> Newsgroups: pl.comp.lang.python Subject: Re: python vs php - potrzebne argumenty Date: Tue, 03 Nov 2009 15:40:42 -0000 Organization: http://onet.pl Lines: 76 Message-ID: <op.u2tsh4k3eaqjf2@mydot.ftpviewlocal.com> References: <h83in7$rl3$1@inews.gazeta.pl> <h8447e$mg9$1@inews.gazeta.pl> <6a8e97cb-add7-450a-b7f2-f16ecc3cd0f6@y23g2000yqd.googlegroups.com> <6a691836-80db-4b66-bc41-f3c15e6782f7@v36g2000yqv.googlegroups.com> <6e26a02f-20fa-4a82-a722-9fbf78f0ef29@z41g2000yqz.googlegroups.com> <hcc9nt$eqr$1@news.lublin.pl> <f03c49b0-651b-4afa-ad73-db8dde63fdef@p35g2000yqh.googlegroups.com> <hccvvt$u0t$1@news.lublin.pl> <ac46bc62-a3ee-40a1-ac5d-860be3029272@z41g2000yqz.googlegroups.com> <hcd7ck$3a6$1@news.lublin.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <21c2c0bd-464f-45b2-a3ce-449c0412d48c@b2g2000yqi.googlegroups.com> <ad429fa2-5c6d-47a8-8337-1dafcd18c0b9@a31g2000yqn.googlegroups.com> <858f3466-5bdd-4c10-baa1-974089ef29ba@s31g2000yqs.googlegroups.com> NNTP-Posting-Host: 89.167.220.4 Mime-Version: 1.0 X-Trace: news.onet.pl 1257262845 337 89.167.220.4 (3 Nov 2009 15:40:45 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Tue, 3 Nov 2009 15:40:45 +0000 (UTC) To: "Marcin Nowak" <marcin.j.nowak@gmail.com> User-Agent: Opera Mail/10.01 (MacIntel) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit