Aflarea saptamanii din care face parte o data

Astazi m-am luptat ceva timp cu o problema de care cred ca s-au mai lovit si altii. Am o data calendaristica si vreau sa afisez din ce saptamana face parte. De exemplu, 14 aprilie 2010 (14-04-2010) face parte din saptamana 12-04-2010 – 14-04-2010.

Asadar, pentru exemplul nostru: 14-04-2010

$day = '14';
$month = '04';
$year = '2010';

Pentru aceasta trebuie sa aflam a cata zi din saptamana este:

$unixdate = mktime( 12, 0, 0, $month, $day, $year );
$dayofweek = date("w", $unixdate);

Pentru a afla ziua de luni dinainte de aceasta data:
$monday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) – ($dayofweek – 1), date(‘Y’, $unixdate)));

Pentru a afla ziua de duminica dupa aceasta data:
$sunday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) + (7 – $dayofweek), date(‘Y’, $unixdate)));

In final:

echo 'Data face parte din saptamana '.$monday.' - '.$sunday;

Bineinteles exemplul poate fi folosit pentru a afla orice data daca adaugam sau scadem un numar orecare de zile la o data stiuta. Nu trebuie decat inlocuita partea bolduita cu numarul de zile pe care dorim sa le adaugam sau scadem.

Despre Type Hinting in php

Am inceput sa citesc PHP Object, Patterns, and Practice si am inteles in sfarsit ce inseamna Type Hinting, desi il folosisem, dar nu stiam ca se numeste asa.
De exemplu, fara Type Hinting daca ai o metoda:

class MyClass {
  public function myFunc($unObiect) {
    echo "bla bla";
  }
}

poti sa apelezi aceasta metoda:

$obiect = new MyClass();
$obiectRau = new clasaRea();
$obiectBun = new clasaBuna();

$obiect->myFunc($obiectBun);

DAR si cu

$obiect->myFunc($obiectRau);

Cu Type Hinting, am rescrie myFunc astfel:

class MyClass {
  public function myFunc(clasaBuna $unObiect) {
    echo "bla bla";
  }
}

acum, daca vom apela

$obiect->myFunc($obiectRau); 

va da Fatal Error. De ce? Pentru ca $obiectRau nu este de tipul clasaBuna, asa cum cere definitia metodei.

Sper ca am inteles corect 🙂