Czemu?
Moim zdaniem:
1. mało wygodne będzie pisanie zapytań do bazy
Twoje zapytanie do bazy jak rozumiem będzie wyglądać mniej więcej
Kod
SELECT int_002_klucz, var_030_imie, var_030_nazwisko FROM uzytkownicy WHERE int_002_klucz = 3
a więc będziesz musiał pamiętać typ, co raczej nie będzie trudne, ale również długość, co może być uciążliwe, i wszędzie to wpisywać
2. spróbuj połączyć swój skrypt z jakimś innym, na przykład wspólna baza użytkowników z PHPBB
zostaniesz przy swojej strukturze tabeli i pozmieniasz cały PHPBB czy przejmiesz tabelę z PHPBB i będzie ona potrzebowała oddzielnej weryfikacji?
3. ponadto masz jedynie dane odnośnie długości maksymalnej, a powiedzmy że będziesz chciał aby była również długość minimalna (raczej nie ma na przykład dwuliterowych imion w języku polskim) to gdzie to wpiszesz? po kolejnym "_"?
natomiast w NIP-ie Ci długość raczej nie potrzebna bo raczej się nie zmienia

a zatem jak widać rozwiązanie mało przenośne
4. Twoja klasa przyjmuje znamiona "klasy boskiej", czyli antywzorca projektowego, innymi słowy klasa (moim zdaniem) chce robić za dużo, będzie sprawdzała od poprawności wartości TRUE/FALSE (powiedzmy w checkbox-ach) do skomplikowanych informacji, jak PESEL-e, NIP-y, REGON-y i inne często prawdodopodobnie bardziej złożone struktury informacji, na przykład ściągane od klienta pliki (których całych prawdopodobnie do bazy nie wrzucisz, ale ich nazwy może już tak, a wielkość plików lub typ plików i tak będziesz musiał sprawdzić)
Twój sposób nie przyjmuję w ogóle możliwości weryfikacji pliku
więc mimo klasy sprawdzającej będziesz musiał i tak sprawdzać
a jak będziesz musiał zedytować kod metody nip to wśród dziesiątek innych metod się zgubisz... edycja długich kodów nigdy nie jest przyjemna(, jednak jak kod się rozbije to w sumie w wielu klasach każda w osobnym pliku też można się pogubić)
no ale każdy programista ma własne zdanie... jeśli takie rozwiązanie Ci wystarczy, nie będzie Ci przeszkadzać no to nie widzę problemu
wg mnie informacje odnośnie danych jak na przykład długość powinny być zawarte raczej w pliku konfiguracyjnym albo jemu podobnym
Cytat
bez ingerencji w kod klasy...
jeżeli piszesz zgodnie z zasadą DRY (Don't repeat yourself) to zmiana jednej liczby z na przykład 30 na 20 wręcz trudno nazwać "ingerencją"

i raczej nie będzie to zbyt uciążliwe
Cytat
hmmm żeby nie okazało się że wynajduje koło na nowo
co do tego że wynajdujesz koło na nowo nie mam wątpliwości bo ktoś taką weryfikację na pewno już zrobił

zbyt przydatne żeby tego nie było, jednak nie mam namiarów

:P
Cytat
Jeśli masz (lub ktoś ma) jakieś propozycje to chętnie wysłucham
ja myślę o sposobie w którym każdy typ danych ma swój odpowiednik w klasie
więc miałbym klasę na przykład NIP, wszystkie te klasy mają metodę isCorrect i wszystkie obiekty mają swoje obiekty informacyjne, przykładowo dla obiektu Integer mam w klasie informacyjnej pola: $info->min, $info->max
no i metoda isCorrect będzie sprawdzać czy jakaś wartość jest liczbą i czy mieści się w przedziale, poza tym metodę isCorrect wywołuję w setterze, więc jeśli jakąś informację mam w obiekcie znaczy że jest poprawna, podobnie jak w językach programowania gdzie trzeba dokonywać inicjalizacji zmiennych, jeśli zastrzeżesz że zmienna ma być typu integer to próba przypisania wartości innego typu spowoduję błąd
obiekty typu info dają swobodę, najpierw myślałem żeby po prostu podawać kilka wartości w konstruktorze które są warunkami, czyli tworzenie obiektu miałoby postać
<?php
$obiekt = new Integer($min, $max);
?>
ale wtedy musisz pamiętać co musi być na którym miejscu w konstruktorze i nie możesz korzystać za bardzo z polimorfizmu, a tak zawsze wpisujesz do konstruktora obiekt $info i będzie tak zawsze i wszędzie... a parametrów odnoszących się do poprawności danego typu danych może być dowolna liczba
Cytat
ale ktoś zwykłą tablicą , może wywołac funkcję której nie chcę , plus podac jej dane
pisałem że po prostu trzeba dorobić zabezpieczenie
najprostszym by było poprzedzenie metod sprawdzających przedrostkiem zwykłego podkreślnika, bądź 'check', a więc: $this->{'_'.$x[0]} i wcześniejsze sprawdzenie czy taka metoda w ogóle istnieje, naturalnie inne metody klasy wtedy nie mogą mieć tego przedrostka, ja include-ów raczej nie stosuje do takiego zadania jak włączanie zawartości strony, jednak raczej podejścia z case-m bym nie kultywował
jednak nie można powiedzieć aby case był bezpieczniejszy, wszystko zależy od kodu...
no dobra napisałem referat starczy już chyba na dziś

moje "rozwiązanie" jest jedynie w połowie zapisane i niekoniecznie jest prawidłowe lub do końca przemyślane...