Присвоение переменных всему классу [Best Practice?] - PullRequest
0 голосов
/ 05 декабря 2010

Итак, у меня есть класс, который выглядит следующим образом (пример)

class Statistics extends Controller {


function __construct()
{
    parent::Controller();
    $data['title'] = 'Statistics';
    //Locale
    setlocale(LC_MONETARY, 'en_US');
    date_default_timezone_set('America/Chicago');
    //Require Login
    $this->load->library('session');
    if($this->session->userdata('affid'))
    {
    $this->load->view('userhead',$data);
    }
    else
    {
    header("Location: /network/login/submit");
    }
}   

//Index page. Show stat display options
function index()
{
    $this->load->view('statoptions');
    $this->load->view('footer');
}

//Stats by offer
function offer()
{
    $this->load->library('statistics');
    $this->_getvars();
    if(!$getsort && $direction)
    {
    $sort = array('Stat.offer_id' => 'desc','Stat.revenue' => 'desc');
    }   

    $stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.offer_id',$sort);
    $data['statdate'] = array('start' => $startdate, 'end' => $enddate);
    $data['stats'] = $stats['data'];
    $data['statview'] = 'offer';
    $data['dir'] = 'desc';
    if($direction == 'desc')
    {
    $data['dir'] = 'asc';
    }
$this->load->view('statistics',$data);
#print_r($data['stats']);
}

//Stats by day
function daily()
{

$stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.date',$sort);
$data['statdate'] = array('start' => $startdate, 'end' => $enddate);
$data['stats'] = $stats['data'];
$data['statview'] = 'daily';
    $data['dir'] = 'desc';
    if($direction == 'desc')
    {
    $data['dir'] = 'asc';
    }
$this->load->view('statistics',$data);
#print_r($stats);
}

//Stats by Affiliate's SubID
function subid()
{
$stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.affiliate_info1',$sort);
$data['statdate'] = array('start' => $startdate, 'end' => $enddate);
$data['stats'] = $stats['data'];
$data['statview'] = 'subid';
    $data['dir'] = 'desc';
    if($direction == 'desc')
    {
    $data['dir'] = 'asc';
    }
$this->load->view('statistics',$data);
#print_r($stats);
}
}   

У меня есть следующие переменные, которые можно вызывать в каждой функции в моем классе.

        $affid = $this->session->userdata('affid');
    $startdate = preg_replace('/[^\d-]+/', '', $this->input->get_post('start'));
    $enddate = preg_replace('/[^\d-]+/', '',$this->input->get_post('end'));
    if(!$startdate)
    {
    $startdate = date("Y-m-d");
    }
    if(!$enddate)
    {
    $enddate = date("Y-m-d");
    }
    $getsort = htmlspecialchars($this->input->get_post('sort'),ENT_QUOTES);     
    $direction = htmlspecialchars($this->input->get_post('dir'),ENT_QUOTES);
    if($getsort && $direction)
    {
    $sort[$getsort] = $direction;
    }

Какова наилучшая практика присвоения переменных всему классу?

Кстати, это контроллер Code Igniter

Ответы [ 2 ]

2 голосов
/ 05 декабря 2010

Я предполагаю, что вы с "целым классом" подразумеваете, что это полный охват.В основном с открытым полем:

public class StatisticsController extends Controller {
    private $StartDate = null;

    public __construct()
    {
        $this->StartDate = date(DATE_RFC822);
    }

    public function GetStartDate()
    {
        return $this->StartDate;
    }
}

$controller = new StatisticsController();
echo($controller->GetStartDate()); // prints something like: Mon, 15 Aug 2005 15:12:46 UTC
0 голосов
/ 05 декабря 2010

Я не уверен, что понимаю, о чем вы спрашиваете, но если это то, что я имею в виду, вы используете «static»:

  class Statistics extends Controller {
    static $startdate;

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

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