Codeigniter передать параметры для работы - PullRequest
4 голосов
/ 08 мая 2011

Я новичок в ООП, и у меня возникли проблемы с пониманием структур, стоящих за ним.Я создал библиотеку в Codeigniter (Template), в которую я передаю некоторые параметры при загрузке, но я хочу передать эти параметры в функции библиотеки.

<code><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Template {

    public function __construct($params)
    {
        echo '<pre>'; print_r($params); echo '
';// это те параметры, которые мне нужны.Я распечатал их, и все выглядит нормально} public function some_function () {// Мне нужны вышеуказанные параметры здесь}}

Ответы [ 4 ]

5 голосов
/ 08 мая 2011

Попробуйте:

class Template {

    // Set some defaults here if you want
    public $config = array(
        'item1'  =>  'default_value_1',
        'item2'  =>  'default_value_2',
    );
    // Or don't
    // public $config = array();

    // Set a NULL default value in case we want to use defaults
    public function __construct($params = NULL)
    {
        // Loop through params and override defaults
        if ($params)
        {
            foreach ($params as $key => $value)
            {
                $this->config[$key] = $value;
            }
        }
    }

    public function some_function()
    {
        //i need the above parameters here

        // Here you go
        echo $this->config['item1'];
    }

}

Это превратит array('item1' => 'value1', 'item2' => 'value2'); в нечто, что вы можете использовать, например $this->config['item1'].Вы просто присваиваете массив переменной класса $config.Вы также можете циклически перебирать переменные и проверять или изменять их, если хотите.

Если вы не хотите переопределять установленные по умолчанию значения, просто не устанавливайте элемент в массиве $params.Используйте столько разных переменных и значений, сколько вы хотите, это ваше дело:)

Как Остин мудро посоветовал Обязательно прочитайте php.net иэкспериментируй самДокументы могут сбивать с толку, потому что они дают много примеров крайних случаев, но если вы посмотрите Библиотеки в Codeigniter, вы сможете увидеть некоторые примеры или то, как используются свойства класса.Это действительно хлебобулочные изделия, с которыми вы должны быть знакомы, чтобы добраться куда угодно.

2 голосов
/ 08 мая 2011

Сделайте учеников такими:

class Template {
    var $param1
    var $param2    

    public function __construct($params)
    {
        $this->param1 = $params[1]
        $this->param2 = $params[2]
        //and so on
    }
}

Тогда вы можете использовать их в своей функции

1 голос
/ 08 мая 2011

Возможно, вы захотите сохранить параметры как свойства в вашем классе, чтобы все ваши методы имели к ним доступ.

См. Эту документацию о свойствах в PHP 5: http://www.php.net/manual/en/language.oop5.properties.php

РЕДАКТИРОВАТЬ: На самом деле, если вы совершенно новичок в ООП, вы обнаружите, что может быть трудно сначала обернуть голову. Задавать вопросы по SO по одному, когда вы сталкиваетесь с проблемами, будет очень неэффективным способом решения этой проблемы. Если вы хотите сэкономить время, я бы порекомендовал начать с прочтения основного текста, который объясняет концепции ООП отдельно от деталей реализации для конкретного языка (например, Процесс объектно-ориентированной мысли ). Затем, когда вам нужны подробности, документы PHP по теме довольно хороши (и бесплатны).

0 голосов
/ 08 мая 2011

Я бы порекомендовал решить, переменные класса являются частными или общедоступными. Это очень помогает с удобочитаемостью. Закрытые переменные следует использовать для внутренних переменных, в то время как публичные переменные следует использовать для вещей, которые являются атрибутами объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...