Propery werkt niet mee

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John Cena

John Cena

25/11/2010 10:58:39
Quote Anchor link
Ik heb deze code, snap niet wat ik fout doe, hij gaat altijd de else in.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

class Customer
{    
    public $_db;
    public $intro;
    public $content;
    public $action;
    public $sub;
    public $id;
    
    function
__construct($action, $sub, $id)
    {

        $this->_db     = new Database();
        $action     = (empty($action)             ? 'list'            : $action);
        $sub        = (empty($sub)                 ? 'detail'            : 'detail');
        $id            = (isset($_GET['id']))         ? $_GET['id']         : NULL;
            
        switch ($action)
        {
            case
'list':
                $this->list_customer($this->action, $this->sub, $this->id);
                break;
            
            case
'wat' :
                $this->extra();
                break;
        }
    }
    
    function
list_customer($action, $sub, $id)
    {

        if ($sub == 'detail')
        {

            echo 'wzzzz';
            $this->customer_detail($this->sub, $this->id);
        }

        
        else
        {
                   //blablabla code
                }
?>
 
PHP hulp

PHP hulp

30/04/2024 16:46:56
 

25/11/2010 11:07:59
Quote Anchor link
OOP
Volgens mij heb je dat nog niet goed genoeg geleerd.
Dit heb je al eens gevraagd.
 
Ozzie PHP

Ozzie PHP

25/11/2010 11:09:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$action
= (empty($action) ? 'list' : $action);
$sub = (empty($sub) ? 'detail' : 'detail');
?>


moet zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$action
= (empty($action)) ? 'list' : $action;
$sub = (empty($sub)) ? 'detail' : 'detail';
?>


Toevoeging op 25/11/2010 11:10:55:

je kan trouwens ook zeggen:

if (empty($action)) $action = 'list';
Gewijzigd op 25/11/2010 11:21:52 door Ozzie PHP
 

25/11/2010 11:13:46
Quote Anchor link
Ozzie PHP op 25/11/2010 11:09:08:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$action
= (empty($action) ? 'list' : $action);
$sub = (empt($sub) ? 'detail' : 'detail');
?>


moet zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$action
= (empty($action)) ? 'list' : $action;
$sub = (empt($sub)) ? 'detail' : 'detail';
?>


Toevoeging op 25/11/2010 11:10:55:

je kan trouwens ook zeggen:

if (empty($action)) $action = 'list';


Maar dit helpt hem ook niet.
Beide nog maar eens naar oop en variable.scope kijken?
Dit geval zou mooi zijn als je java deed.
 
John Cena

John Cena

25/11/2010 11:14:14
Quote Anchor link
Ozzie, dat kan haast niet, $action werkt namelijk wel gewoon...
 
Ozzie PHP

Ozzie PHP

25/11/2010 11:18:27
Quote Anchor link
Ah ja, ik weet hoe het werkt hoor ;-)

$this->list_customer($this->action, $this->sub, $this->id);

Je roept hier variabelen aan die niet geset zijn.
 
John Cena

John Cena

25/11/2010 11:18:47
Quote Anchor link
Got it fixed:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php


class Customer
{    
    public $_db;
    public $intro;
    public $content;
    public $action;
    public $sub;
    public $id;
    
    function
__construct($action, $sub, $id)
    {

        $this->_db     = new Database();
        $action     = (empty($action))             ? 'list'            : $action;
        $sub        =  'detail';
        $id            = (isset($_GET['id']))         ? $_GET['id']         : NULL;
            
        switch ($action)
        {
            case
'list':
                $this->list_customer($action, $sub, $id);
                break;
            
            case
'wat' :
                $this->extra();
                break;
        }
    }
    
    function
list_customer($action, $sub, $id)
    {
    
        if ($sub == 'detail')
        {

            echo 'wzzzz';
            $this->customer_detail($this->sub, $this->id);
        }

else{}
?>


@ Karl, wat bedoel je met JAVA?
Gewijzigd op 25/11/2010 11:19:33 door John Cena
 

25/11/2010 11:20:06
Quote Anchor link
Chi Lion op 25/11/2010 11:14:14:
Ozzie, dat kan haast niet, $action werkt namelijk wel gewoon...


Jullie doen beide het 'verkeerd', buitenste haakjes zijn niet nodig.
(1+1) = 2 <- haakjes niet nodig.
Bij Ozzie is het helemaal vaag.

@Ozzie, laat hem dit lekker zelf uitzoeken, paar topics terug van hem deed hij het ook al niet goed.
@Chilion, je gaat je mist in door die constructor met switch.
@Chilion, volgens mij is dit nog niet precies zoals je het wilt hebben, maar goed.
En bij java heb je dit nog veel sneller / sterker / meer.
Basic gedoe is dit.
Gewijzigd op 25/11/2010 11:21:17 door
 
John Cena

John Cena

25/11/2010 11:30:55
Quote Anchor link
Bedankt Karl, ik heb die link van je al meerdere keren doorgelezen. Ik denk dat naast het theorie tot je nemen toch ook een groot gedeelte van OOP (ofzelfs programmeren) ervaring opdoen is en fouten maken.

Deze fout zal ik nu niet meer maken (hoop ik) (2maal is scheepsrecht)

Groet,
 
Ozzie PHP

Ozzie PHP

25/11/2010 11:32:15
Quote Anchor link
Karl, wat is bij mij vaag? Die verkorte if-statement?

Die klopt toch gewoon? Als ik google vind ik dit. Is hetzelfde toch?

$x = ($myvalue == 10) ? "the value is 10": "the value is not 10";
(http://www.lizjamieson.co.uk/2007/08/20/short-if-statement-in-php/)
 

25/11/2010 13:04:25
Quote Anchor link
Chi Lion op 25/11/2010 11:30:55:
Bedankt Karl, ik heb die link van je al meerdere keren doorgelezen. Ik denk dat naast het theorie tot je nemen toch ook een groot gedeelte van OOP (ofzelfs programmeren) ervaring opdoen is en fouten maken.

Deze fout zal ik nu niet meer maken (hoop ik) (2maal is scheepsrecht)

Groet,

Je zit te klooien met de variable scope. Die $action is alleen binnen de constructor bekend, want daar is het een parameter. Het is dus geen property (wat jij volgens mij wel denkt dat het is).
Dan moet je met $this-> werken.
Ozzie PHP op 25/11/2010 11:32:15:
Karl, wat is bij mij vaag? Die verkorte if-statement?

Die klopt toch gewoon? Als ik google vind ik dit. Is hetzelfde toch?

$x = ($myvalue == 10) ? "the value is 10": "the value is not 10";
(http://www.lizjamieson.co.uk/2007/08/20/short-if-statement-in-php/)

Ja, ik weet hoe een ternary operator werkt. Mijn punt is dat jij om de functie empty nog eens haakjes gaat zetten, dat is niet nodig. Alsof je dit doet: (sin(pi))
Er worden haakjes gebruik in programmeren om duidelijkheid te maken, soms zijn ze ook vereist $p&&$q||$r (of volgens logica p^qVr), welke horen nu bij elkaar?
Je kunt dus wel doodleuk overal haakjes toevoegen, maar dat helpt niet altijd de duidelijkheid te vergroten. Je moet het dus wel toepasselijk doen. Net zoals dat je in de wiskunde dingen buiten haakjes haalt, dan worden ze soms zoveel simpeler.
De statement kan (en vind ik ook het duidelijkste) dit zijn:
$action = empty($action) ? 'list' : $action;
 
Ozzie PHP

Ozzie PHP

25/11/2010 13:11:05
Quote Anchor link
Ja, ik snap precies wat je bedoelt met die haakjes, maar...

ik dacht eigenlijk dat de syntax van een verkort if-statement als volgt is:

(hier je vergelijking) ? waar : onwaar

Maar als ik jou goed begrijp zeg jij dat het zo moet:

hier je vergelijking ? waar : onwaar

Dus zonder haakjes?
 
Niels K

Niels K

25/11/2010 13:15:02
Quote Anchor link
Alles mag en kan. Maar
Quote:
Mijn punt is dat jij om de functie empty nog eens haakjes gaat zetten, dat is niet nodig

zegt voldoende?

EDIT:
Ik was iets eerder karl :)
Gewijzigd op 25/11/2010 13:15:38 door Niels K
 

25/11/2010 13:15:05
Quote Anchor link
Moet niet, die haakjes hebben geen toegevoegde waarde. Zie ook php.net (ternary) voor nieuwe syntax met ?: (die heeft alleen een false gedeelte).
 
Ozzie PHP

Ozzie PHP

25/11/2010 13:19:54
Quote Anchor link
Oke, maar op php.net/ternary staat dit:

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

Met haakjes dus :-s

You got me confused now!
 

25/11/2010 13:28:34
Quote Anchor link
Dat staat er om aan te geven dat die delen bij elkaar horen.
Je doet dit toch ook niet? if((empty($blaat)))...?
 
Ozzie PHP

Ozzie PHP

25/11/2010 13:30:32
Quote Anchor link
nee, idd...

Naja, ik dacht dat die haken erbji hoorden.. weer wat geleerd zullen we maar zeggen... ahum ;-)
 
Pim -

Pim -

25/11/2010 14:04:15
Quote Anchor link
Met haakjes kan je de precedence, 'voorrang', aanpassen. Zie Php.net Operator Precedence
 

25/11/2010 14:08:27
Quote Anchor link
Pim - op 25/11/2010 14:04:15:
Met haakjes kan je de precedence, 'voorrang', aanpassen. Zie Php.net Operator Precedence


Klopt. Zoals ik hierboven heb gezet met logica en vereiste. Maar als het niet hoeft, vind ik het duidelijker om ze ook niet te gebruiken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.