Avatar billede domaz.dk Novice
15. september 2006 - 13:30 Der er 6 kommentarer og
1 løsning

OOP spm

Jeg er lige begyndt på at eksperimentere med lidt OOP i php5 og er løbet ind i mit første problem.

koden:

OrderForm.php
<?php
class OrderForm {
    private $var;
   
    public function __construct($var) {
        $this->var = $var;
    }
   
    public function EmptyAllowed($str) {
        if (empty(trim($str))) {
            $str = "Not filled out.";
            return $str;
        }
    }
   
    public function CheckEmptyWhitespace() {
        if (empty(trim($this->var))) {
            $var->errorMessage("CheckEmptyWhitespace");
        }
        else {
            return $this->var;
        }
    }
   
    public function errorMessage($from) {
        switch ($from){
            case "CheckEmptyWhitespace":
                echo "CheckEmptyWhitespace";
            break;
        }
    }
}
?>

bestilling.php
<?php
if ($_POST['submit']) {
    require('a-cms/core/modules/OrderForm.class.php');
   
    $company_name = new OrderForm($_POST['company_name']);
    $company_name->CheckEmptyWhitespace();
   
    $attention = new OrderForm($_POST['attention']);
    $attention->EmptyAllowed($attention);
}
?>
......


Når jeg lader feltet 'company_name' og 'attention' stå tomt og trykker på submit kommer den med denne fejl:

Fatal error: Can't use function return value in write context in '........'/OrderForm.class.php on line 10

* '........' er en erstattelse for den lange host sti.

nogle der evt. kan se hvor det går galt i min kode?
Avatar billede domaz.dk Novice
15. september 2006 - 13:32 #1
line 10 i OrderForm.class.php er:

"if (empty(trim($str))) {"
Avatar billede Slettet bruger
15. september 2006 - 13:40 #2
Man kan ikke sige empty(trim()) :)
Avatar billede Slettet bruger
15. september 2006 - 13:41 #3
Det vil nok være optimalt bare at sige if(empty($str)) - Alternativt kan du sige:

$str = trim($str);
if(empty($str)) {
Avatar billede domaz.dk Novice
15. september 2006 - 14:05 #4
selvf... hvor jeg hader dumme fejl.

når det så er rettet kommer den med:

Fatal error: Call to undefined function errorMessage() in '.......'/OrderForm.class.php on line 20

hvor line 20 er:

$var->errorMessage("CheckEmptyWhitespace");
Avatar billede fangel Nybegynder
15. september 2006 - 14:23 #5
Det skal jo være $this->var->errorMessage.... - $var findes ikke, og derfor kan man ikke kalde en funktion "i" den.. ;)
Avatar billede domaz.dk Novice
15. september 2006 - 14:34 #6
fangel:

tæt på.. ;)

if (empty($this->var)) {
$message = $this->errorMessage("CheckEmptyWhitespace");
$this->var = $message;
}
return $this->var;
Avatar billede Slettet bruger
15. september 2006 - 14:44 #7
Der er ingen grund til at lave en public var ud af det:

if (empty($this->var)) {
$message = $this->errorMessage("CheckEmptyWhitespace");
}
return $message;

Og tak for points.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester