web-dev-qa-db-fra.com

PHP Méthode d'appel de classe/fonction

Comment puis-je appeler la méthode ou la fonction de classe suivante?

Disons que j'ai ce params obtenir de l'URL:

$var = filter($_GET['params']);

Classe:

class Functions{

    public function filter($data){
        $data = trim(htmlentities(strip_tags($data)));

        if(get_magic_quotes_gpc())
            $data = stripslashes($data);

        $data = mysql_real_escape_string($data);

        return $data;
    }

}

merci.

11
conmen

Pour répondre à votre question, la méthode actuelle serait de créer l'objet puis d'appeler la méthode:

$functions = new Functions();
$var = $functions->filter($_GET['params']);

Une autre solution serait de rendre la méthode static puisque la classe ne dispose pas de données privées sur lesquelles s'appuyer:

public static function filter($data){

Cela peut alors s'appeler comme suit:

$var = Functions::filter($_GET['params']);

Enfin, vous n'avez pas besoin d'une classe et pouvez simplement avoir un fichier de fonctions que vous incluez. Donc, vous supprimez le class Functions et le public dans la méthode. Cela peut alors s'appeler comme vous avez essayé:

$var = filter($_GET['params']);
24
UnholyRanger

Dans la classe, vous pouvez appeler une fonction en utilisant:

 $this->filter();

En dehors de la classe

vous devez créer un objet d'une classe

 ex: $obj = new Functions();

     $obj->filter($param);    

pour plus sur les POO en php

cet exemple:

class test {
 public function newTest(){
      $this->bigTest();// we don't need to create an object we can call simply using $this
      $this->smallTest();
 }

 private function bigTest(){
      //Big Test Here
 }

 private function smallTest(){
      //Small Test Here
 }

 public function scoreTest(){
      //Scoring code here;
 }
}

$testObject = new test();

$testObject->newTest();

$testObject->scoreTest();

j'espère que ça va aider!

3
sandip

Créez un objet pour la classe et appelez-le si vous souhaitez l'appeler depuis d'autres pages.

$obj = new Functions();

$var = $obj->filter($_GET['params']);

Ou dans les mêmes instances de classe [méthodes], essayez ceci.

$var = $this->filter($_GET['params']);
2
Edwin Alex
$f = new Functions;
$var = $f->filter($_GET['params']);

Consultez la section du manuel PHP sur Programmation orientée objet

1
dnagirl

Comme la fonction n’utilise pas du tout $this, vous pouvez ajouter un mot-clé static juste après public

Functions::filter($_GET['params']);

Éviter la création d'un objet juste pour un appel de méthode 

1
MatRt

Vous devez créer Object pour le class.

$obj = new Functions();
$var = $obj->filter($_GET['params']);
0
Dipesh Parmar

Par ici:

 $instance = new Functions(); // create an instance (object) of functions class
 $instance->filter($data); // now call it
0
Ihsan