私は今週オープンブック テストを行います。このテストは、レガシー コードのチャンクが提供され、コードを「移植」する必要がある演習になると通知されました。
オープンブックテストとは何か、そしてその要件(思考プロセスなどをテストするため)は理解していますが、(それはロングショットです)「移植」には何が含まれますか?「移植」とは何かについて漠然とした考えがあります。
私は今週オープンブック テストを行います。このテストは、レガシー コードのチャンクが提供され、コードを「移植」する必要がある演習になると通知されました。
オープンブックテストとは何か、そしてその要件(思考プロセスなどをテストするため)は理解していますが、(それはロングショットです)「移植」には何が含まれますか?「移植」とは何かについて漠然とした考えがあります。
移植とは、コードが開発されたプラットフォームから別のプラットフォーム (Windows から Unix、または ASP から PHP) にコードを移行することを指します。
これは、いくつかの (古い) php4 コードを取得し、それを php5 に移植することになっていることを意味している可能性があります。
その場合、コードはerror_reporting(E_ALL|E_STRICT)
警告メッセージなしで設定を実行する必要があります。また、各関数/メソッドの説明に「この関数は非推奨です」という注記/警告が含まれているかどうかを確認してください。
Imo の可能性が高い候補は、セッション、クラス、ereg (posix 正規表現)、さらにはregister_globalsとallow_call_time_pass_referenceです。
おそらく、「古い」回避策の使用法を見つけて、それらを新しい機能に置き換えることも想定されています。例えば
// $s = preg_replace('/foo/i', 'bar', $input);
// use php5's str_ireplace() instead
$s = str_ireplace('foo', 'bar', $input);
ただし、それはカバーしたトピックによって異なります。
例: 「この php4 コードを php5 に移植します」:
<?php
class Foo {
var $protected_v;
function Foo($v) {
$this->protected_v = $v;
}
function doSomething() {
if ( strlen($this->protected_v) > 0 ) {
echo $this->protected_v{0};
}
}
}
session_start();
if ( session_is_registered($bar) ) {
$foo = new Foo($bar);
$foo->doSomething();
}
そして答えは
<?php
class Foo {
// php5 introduced visibility modifiers
protected $v;
// the "preferred" name of the constructor in php5 is __construct()
// visibility modifiers also apply to method declarations/definitions
public function __construct($v) {
$this->v = $v;
}
public function doSomething() {
if ( strlen($this->v) > 0 ) {
// accessing string elements via {} is deprecated
echo $this->v[0];
}
}
}
session_start();
// session_is_registered() and related functions are deprecated
if ( isset($_SESSION['bar']) ) {
$foo = new Foo($_SESSION['bar']);
$foo->doSomething();
}
移植とは、ある環境から別の環境へのコードの移行です。多くの場合、ある OS から別の OS へ、または 1 つのハードウェア プラットフォームから別のハードウェア プラットフォームへ移行しますが、別のプログラミング言語または同じプログラミング言語の別のバージョンから移行する可能性もあります。
文脈から、彼らは古い PHP バージョン用の古いコーディング スタイルで書かれた PHP コードを提供し、最新のコーディング標準を使用して最新バージョンの PHP で正しく実行されるようにコードを更新するように依頼するだろうと推測しています。