Kłaniają się podstawowe definicje o metodach, referencjach i zmiennych. Zmienna $email w metodzie staje się jej lokalną, a więc po za nią niestety się nic nie zmieni. Zwracasz return, a więc nie zmieniasz danej, którą do metody przekazujesz, ale otrzymujesz zupełnie nową zmienną. Rozwiązanie na Twoją myśl przedstawie na dwóch przykładach, które dadzą ten sam efekt, ale nie wiem, którą wersję będziesz chciał i rozumiał:
// przez zwracanie wartości zmiennej i przepisanie jej później w kodzie głównym
class waliduj{
public function walidacja_email($email) {
return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email); }
}
$nowy = new waliduj;
$email = $_POST['email'];
$email = $nowy->walidacja_email($email);
echo $email; // zwroci odpowiednio 0,1 [false/true];
// albo przez dodanie znaczka & w definicji funkcji, dzięki czemu będziesz mieć referencje, a co za tym idzie zmienna $email zrobi się jakby globalna w tym miejscu
class waliduj{
public function walidacja_email(&$email) {
$email = eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email); }
}
$nowy = new waliduj;
$email = $_POST['email'];
$nowy->walidacja_email($email);
echo $email; // zwroci odpowiednio 0,1 [false/true];
Efekt podobny - dwa rodzaje rozwiązania. Mam nadzieje, że rozumiesz gdzie zrobiłeś błąd. W razie co pisz, to postaram się tłumaczyć inaczej

A jak pomogłem to proszę o punkcik ;-)