2013-03-19 4 views
9

Как я могу вызвать следующий метод или функцию класса?PHP вызов Метод/функция класса

Пусть говорят, что я это Params получить от URL:

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

Класс:

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; 
    } 

} 

спасибо.

+3

в сторону на свой вопрос, если ваш 'Функции :: фильтр()' это код, который вы собираетесь использовать, следует помнить, что PHP mysql_ * расширение было осуждается. Используйте mysqli_ * или pdo_ * и настоятельно рекомендуем использовать подготовленные инструкции (что в любом случае устранит необходимость вашей функции). – dnagirl

+2

Не произвольно «фильтровать» данные. Вы просто искажаете свои данные совершенно не в форме. Узнайте, что вы пытаетесь сделать здесь в первую очередь: [Великий эскапизм (или: что вам нужно знать для работы с текстом внутри текста)] (http://kunststube.net/escapism/) – deceze

ответ

19

Чтобы ответить на ваш вопрос, текущий метод будет создать объект, вызовите метод:

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

Другим способом было бы сделать метод static так как класс не имеет личные данные, чтобы полагаться на:

public static function filter($data){ 

Это то можно назвать так:

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

Наконец, вам не нужен класс и вы можете просто иметь файл функций, который вы включили. Таким образом, вы удаляете class Functions и public в методе. Это может тогда быть названа как вы пробовали:

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

Не поощряйте его – Flosculus

2

Создайте объект для класса и вызовите его, если хотите его называть с других страниц.

$obj = new Functions(); 

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

Или внутри того же экземпляра класса [методы], попробуйте это.

$var = $this->filter($_GET['params']); 
+1

небольшой каламбур, использование ' $ this' должен находиться внутри объекта, а не внутри страницы. – dnagirl

+0

@dnagirl Small (er) quibble: использование '$ this' должно быть в пределах экземпляров объекта, а не только где-либо в объекте (то есть не статике, а не вне тела метода) –

+0

@ColinMorelli: miniscule bibb: that's почему я сказал «объект», а не «класс». ;) Но ясность хорошая, и вы совершенно правы. – dnagirl

0

Вам нужно создать Object для class.

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

Таким образом:

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

Поскольку й функция не используется $this на всех, вы можете добавить static ключевое слово только после того, как общественности, а затем вызвать

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

избежать создания объекта только для одного вызова метода

3

В классе вы можете функцию вызова с помощью:

$this->filter(); 

Вне класса

вы должны создать объект класса

ex: $obj = new Functions(); 

    $obj->filter($param);  

более about OOPs в PHP

это пример:

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(); 

надеюсь, что это поможет!

+0

Sandip, без экземпляра, он не может ссылаться на него в классе с $ this тоже. – Ihsan

+0

@ Исаан да в классе $ это работает как пример – sandip

Смежные вопросы