我在CakePHP应用程序中实现了一个简单的回文问题来学习语言和框架。我有一切工作,但有一些奇怪的行为,我无法解释。
我有一个名为Palindrome的类,带有__construct方法,它接受一个参数,该参数应该始终是一个字符串。但是,第一次实例化Palindrome类的实例时,__construct方法执行两次,并且第一次传入一个数组,这似乎是对该类的一些引用。我已经能够解决这个问题,但我不明白为什么会这样。任何人都可以开导我吗?这是我的代码:
班级档案:
class Palindrome {
public $base_string = "";
public function __construct($passed_string)
{
print "==> $passed_string<br />";
if(!is_array($passed_string))
{
$this->base_string = trim($passed_string);
}
}
}
控制器:
class PalindromesController extends AppController
{
public $helpers = array('Html', 'Form');
public function index()
{
}
public function test_strings()
{
$string_array = explode("\n", $_POST["text_to_test"]);
$string_index = 0;
$palindrome_array = array();
while($string_index < count($string_array))
{
$my_string = $string_array[$string_index];
print "---> $lcString<br />";
array_push($palindrome_array, new $this->Palindrome(strtoupper($my_string)));
$string_index = $string_index + 1;
}
$this->set("palindrome_array", $palindrome_array);
}
}
输入“foo \ nbar \ nbaz”会生成此输出 -
---> foo
==> Array
==> FOO
---> bar
==> BAR
---> baz
==> BAZ
这是使用PHP 5.3.15的CakePHP 2.2.3。
答案 0 :(得分:0)
您有new $this->Palindrome(...)
来自控制器$this->Model
的行为有点像单身人士。它会自动创建,然后您可以多次使用它来读取/写入数据源的数据。例如,在整个代码块中使用相同的Model对象:
$record1 = $this->Model->findById(4);
$record2 = $this->Model->findById(5);
$this->Model->create(array(/*...*/));
$this->Model->save();