2013-07-03 2 views
0

Я работаю над CakePHP 2.x .. Я хочу создать специальный класс, в котором я хочу создавать функции, чтобы я мог вызывать функции с других контроллеров.Хотите создать пользовательскую функцию

Например, эта функция

function replace_dashes($string) { 
    $string = str_replace("-", " ", $string); 
    return $string; 
    } 

Поэтому, когда я хочу, чтобы использовать эту функцию в каком-то другом контроллере я могу назвать это или передать параметры слишком ...

Я хочу, чтобы реализовать все сырье такие функции выполняются в некотором классе. Как я могу сделать это в CakePHP?

+1

Вы хотите создать класс со вспомогательными методами? Для этого используйте lib/lib. – mark

ответ

3

Его не так сложно. Просто создайте файл в/Lib, в идеале с пространством имен, как «Utility»:

/Lib/Utility/Utility.php 

и поставить свои методы там:

class Utility { 
    public static function replaceDashes($string) { ... } 
} 

Затем вы можете использовать его в любом месте в вашем приложении:

//App::uses('ClassName', 'Package'); and our Package is the Folder "Utility" in /Lib 
App::uses('Utility', 'Utility'); 
$result = Utility::replaceDashes($input); 

и т.д.

https://github.com/dereuromark/tools/blob/master/Lib/Utility/Utility.php См и его тест, для сценария реальной жизни/примера.

Не забудьте также написать несколько тестовых примеров.

+0

спасибо mark ..let me try – hellosheikh

+0

awesome mark .... – chetanspeed511987

+0

@mark ... у вас есть? я получил ошибки, поэтому хочу обсудить – hellosheikh

-3

Создать эту функцию в AppContoller.php как

public function __replaceDashes($string) { 
     $string = str_replace("-", " ", $string); 
     return $string; 
} 

Зов это в любом контроллере, как

$str = "anything"; 
$your_output = $this->__replaceDashes($str); 

ИЛИ

Вы можете сделать свой собственный компонент.

+0

ну, я не хочу писать это в контроллер приложения, поскольку у меня есть много важного кода там – hellosheikh

+0

Затем сделайте компонент для своей пользовательской функции или используйте lib – chetanspeed511987

+0

Я не знаю, как это сделать .. можете ли вы предоставить мне пример или любая полезная ссылка – hellosheikh