Nie wiem jak u Was, w innych miejscowościach ale u mnie strasznie parno i pochmurnie zajkby za dosłownie chwilkę miał lunąć deszcz No tak, to nie forum o pogodzie, więc przejde do rzeczy.
Siedziałem dzisiaj na labolatorium programowania wizualnego, zastanawiając się jak rozwiązać pewien problem, a do głowy wpadło mi coś zupełnie innego. Z początku uznałem to za bzdurę i poronioną ideę, jednak coraz bardziej się do niej przekonuję - mimo iż nadal uważam ją za nieco bezsensowną. Popędziłem czym prędzej do domu aby sie nią z Wami podzielić. Mam nadzieję, że zainteresuję Was mój pomysł i wesprzecie moją ideę (propozycje zmian, uwagi techniczne), albo wybijecie z głowy
Jak wiemy w PHP nie ma mechanizmu, który pozwoliłby nam na sztywne trzymanie się danego typu danych (np integer). Mój pomysł może to zmienić. Według tego co wymyśliłem, każda zmienna była by obiektem Chcąc stworzyć zmienną typu całkowitego programista używałby np takiego kodu:
<?php $calkowity = new typy(INT); ?>
albo np:
<?php $calkowity = typy::integer(); ?>
Ale co dalej?
Klasa typy dostarczała by szereg metod, które umożliwiałyby odczytywanie i modyfikowanie wartości, przy czym mogłaby generować wyjątki w momencie gdy np do zmiennej typu int będziemy chcieli zapisać łańcuch znaków.
<?php $calkowity->value(10); $calkowity->add(5); $calkowity->getValue(); // zwraca 15 ?>
Dodatkowo planowałem dodać metody konwertujące:
<?php $calkowity->toString(); // zwraca "15" (string) ?>
<?php $string = typy::string(); $string = $calkowity->toString(); ?>
Ale hola, hola... Tzn, że trzeba używać metody getValue, aby wypisać stringa na ekranie? Nie! Może nawet taka metoda nie będzie potrzebna, gdyż:
<?php public function __toString() { return $this->value; } ?>
Prawdopodobnie dałoby się tak samo z integerami i innymi typami danych... Do tego dochodziło by także sprawdzanie typów (+ wyjątki) oraz szereg innych metod, jak np getType() - zwracająca typ zmiennej.
Nie wiem natomiast co z tablicami i obiektami - nie zdążyłem jeszcze nad tym pomyśleć Niemniej jednak, przewiduję także typ
'mixed'.
Bardzo zależy mi na Waszej opinii, szczególnie tych bardziej doświadczonych osób i już teraz bardzo dziękuję za wszelkie komentarze.