破棄されたブログ

このブログは破棄されました。

インスタンス変数の型が基底で変更されてこわい。

FuelPHP のテンプレートコントローラのサンプルコードで、定義時には string なインスタンス変数がインスタンスメソッド内でなんらかのオブジェクトとして扱われてる箇所ある。

<?php
class Controller_Example extends Controller_Template
{

	 public $template = 'template_admin'; // string

	 public function action_index()
	 {
		  $this->template->title = 'Example Page'; // Object
		  $this->template->content = View::forge('test/index', $data);
	 }
}

基底の Controller_Template クラス (/fuel/fuel/core/classes/controller/template.php) で、初期化メソッドで View オブジェクトに置き換えてる。

<?php

	public function before()
	{
		if ( ! empty($this->template) and is_string($this->template))
		{
			// Load the template
			$this->template = \View::forge($this->template);
		}

		return parent::before();
	}

動的型付け言語だとインスタンス変数の型が基底で変えられちゃってるとか結構あるのかな。それにしても、PHP は string がプリミティブだしなんかやっぱこわい。慣れないと。

広告を非表示にする