Codeigniter库类的公共变量不起作用

Here is a snippet of my code:

<?php

if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}

class sample{

function __construct() {
    $this->ci = & get_instance();
    }

public $name;
public $style;


function set_data($data)
{
    /* List of parameters that you can set */

    $this->name = (isset($data['name']) ? $data['name']: ''); // Set select name
    $this->style = (isset($data['style']) ? $data['style']: ''); // Set select style

}

function select_both_dropdown()
{
    $select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
    $select .= '<option value=""></option>';
    $select .= '</select>';
return $select;
}

Controller:

$data['select'] = $this->sample->select_both_dropdown(array(
        'name' => 'eventselect',
        'style' => 'min-width: 247px;'
    ));

How it is being loaded in controller: function _construct() { parent::_construct(); $this->load->library('tank_auth'); $this->load->library('sample'); }

When the select loads on the screen, nothing is filled in. No name, no style etc.. What am I doing wrong?

You need to reference them properly;

In the library;

// as you have done
$this->select = 'foo';

In your controller it would be something like $this->sample->name or $this->sample->style

But the $select is not an attribute or being returned so will not be avaiable.

UPDATE - based on comments controller;

$this->sample->set_data(array(
        'name' => 'eventselect',
        'style' => 'min-width: 247px;'
    ));
$data['select'] = $this->sample->select_both_dropdown();

ANOTHER UPDATE:

function select_both_dropdown($data)
{
    $this->set_data($data);
    $select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
    $select .= '<option value=""></option>';
    $select .= '</select>';
return $select;
}

I would then change set_data() to private instead of public.