Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    PHP OOP metodo, passare un argomento con la possibilità di scegliere solo 2 valori

    Ciao a tutti,

    è possibile fare in modo che un argomento passato possa avere solo due valori?
    Nel codice sotto vorrei che $tipo sia o uguale alle stringhe 'lat' o uguale a 'lon'.
    È possibile stabilire queste condizioni direttamente negli argomenti del metodo?


    Codice PHP:
        private function getCoordenadas($coordenadas,$tipo) {
            if(
    $tipo!='lat' || $tipo!='lon')
              return 
    false;
        } 
    Posso stabilire che sia di una certa istanzia ed esempio Tipo $tipo, ma non posso farlo con due costanti, il seguente esempio da ERRORE visto che il secondo argomento non è un istanza di tipo 'Tipo'



    Codice PHP:



    class MiClass{
        
    $this->getCoordenadas('quilecoordinate'self::LAT);
       private function 
    getCoordenadas($coordenadas,Tipo $tipo) {
            
        }
    }


    class 
    Tipo{
        const 
    LAT='lat';
        const 
    LON='lon';

    Grazie,
    Roberto

  2. #2
    apparte che non ho capito che cosa hai fatto nel secondo esempio di codice visto che quel "$this->getCoordenadas" è messo in mezzo alla classe così, ma penso sia solo una cosa fatta in velocità. Cmq no non puoi a meno di non fare qualche forzatura sulla tua classe Tipo in maniera da costringere ad usare istanze definite. Quindi o togli il metodo "getcoordinadas" alla classe dalla visibilità pubblica e metti solo due metodi pubblici, getLatitudine e getLongitudine che internamente richiamano getcoordinates con i valori corretti, oppure fai un check sul tipo richiesto
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    questa dovrebbe essere un'alternativa per definire enum come nel tuo caso

    https://github.com/myclabs/php-enum
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    qualcosa di piu completa: https://github.com/marc-mabe/php-enum

    cmq entrambe sono una forzatura (tantè che uno è costretto a chiamare __callStatic ) quindi non la percorrerei come strada
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Perche non crei 2 metodi ?

    Codice PHP:
        private function getCoordenadasLat($coordenadas) {
            
    $this->getCoordenadas($coordenadas,'lat');
        }

        private function 
    getCoordenadasLon($coordenadas) {
            
    $this->getCoordenadas($coordenadas,'lon');
        }

        private function 
    getCoordenadas($coordenadas,$tipo) {
            ....
        } 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.