言語とフレームワークを学ぶために、CakePHPアプリケーションに単純な回文問題を実装しました。私はすべてが機能していますが、説明できない奇妙な動作が1つあります。
__constructメソッドを持つPalindromeというクラスがあります。このクラスは、常に文字列である必要がある1つのパラメーターを受け入れます。ただし、Palindromeクラスのインスタンスを初めてインスタンス化するときは、__constructメソッドが2回実行され、最初に配列が渡されるときは、クラスへの参照のように見えます。私はこれを回避することができましたが、なぜそれが起こっているのか理解できません。誰かが私を啓発できますか?これが私のコードです:
クラスファイル:
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
これは、PHP5.3.15を使用したCakePHP2.2.3です。