ホームページ >バックエンド開発 >PHPチュートリアル >PHP フレームワーク YII ノート 1

PHP フレームワーク YII ノート 1

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:02:22985ブラウズ

PHP フレームワーク YII 注 1
1 スキャフォールディングを使用して yiic をインストールします。yiic をフレームワークの下に置き、php.exe を php の下に置くことに注意してください。
アプリケーション ディレクトリが yiidemo であると仮定して、最初に
cd yiidemo
yiic webapp デモを実行します。アプリケーションの名前)
はフレームワーク


2 コントローラーの作成
cd yiidemo
yiic シェル
この時点で、ヘルプにアクセスして、 help
生成された最初のコントローラー
コントローラー メッセージ (コントローラー名) helloworld (メソッド名)
デフォルトでは、コントローラーは保護されたディレクトリにも生成され、コントローラーと同じ名前のビュー ファイルもあります
ビュー ディレクトリ

で次を実行します:
http://localhost:8082/myphp/yiidemo/index.php?r=message/helloWorld

パラメータをビューに渡す
$theTime = date("D M j G:i:s T Y");
$this->render('helloWorld',array('time'=>$theTime)) ;
VIEW:



3 yii の HTML ヘルプ クラスへのリンク:

最初のパラメータは接続のテキストです。2 番目の配列は
キーと値です。コントローラー/メソッド

4 yii. 単体テスト
テスト ファイルは protected/tests/unit/ に配置されます
通常、MessageTest.class
のように、Action+Test に基づいて名前が付けられます。テスト対象のメソッドが actionHelloworld() の場合、テスト メソッドは
testActionHelloworld() です。

機能テスト ファイルは protected/tests/function

5 つの単体テスト ステップに配置されます。
1) phpunit をインストールします
pear channel-discover pear.phpunit .de
pear install phpunit/PHPUnit

(pear upgrade -all に注意してください)
2) selenium RC SERVER をダウンロードします
3) テスト ディレクトリの WebTestCase.php を変更し、
define('TEST_BASE_URL','http://localhost:8082/myphp/yiidemo/index-

test.php/】に設定します。 ');
4) Selenium サーバーを開始します

5) テストが開始します
cd protected/tests/
phpunit Functional/SiteTest.php
これにより、IE と FIREFOX が自動的に開きます。 testphpunit.xml に移動してブラウザ設定を変更できます

6) TDD
クラスを作成するたびに、
phpunit/XXXX.PHP テスト


Yii::import('application.controllers.MessageController');
class MessageTest extends CTestCase
{
public function testRepeat()
{

$message = new MessageController('messageTest');
$yell = "こんにちは、誰かいますか?";
$returnedMessage = $message->repeat($yell);
$ this->assertEquals($returnedMessage, $yell);
}
}

?>

7 データベース接続
$connection=new CDbConnection($dsn ,$username,$password);
SQLite: sqlite:/path/to /dbfile
? MySQL: mysql:host=localhost;dbname=testdb
? PostgreSQL: pgsql:host=localhost;port= 5432;dbname=testdb
? SQL Server: mssql:host=localhost;dbname =testdb
? Oracle: oci:dbname=//localhost:1521/testdb
構成ファイルは
/ にあります。 protected/config/main.php
MYSQL 構成に変更
// アプリケーション コンポーネント
'components'=>array(

'db'=>array(
'connectionString' => 'mysql:host=127.0.0.1;dbname=trackstar_dev',
'emulatePrepare' => true,
'username' => 'your_db_user_name',
'password' => 'your_db_password',
'charset' => 'utf8',
),
),
使用時: Yii::app()->db


8 GII を開始します
Gii は、実際には、Web ページのスキャフォールディング生成ツールです
1) 設定
protectedconfigmain.php
追加:
' modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'[自分のパスワード] ',
),
),


2) データベースにテーブルを作成した後、GII で MODEL クラスを生成します
3) 単体テストを続行します

{
//新しいプロジェクトを作成します
$newProject=new Project;
$newProjectName = 'テスト プロジェクト 1';
$newProject->setAttributes(
array('name' => $newProjectName,
'description' => 'テスト プロジェクト番号 1',
'create_time' => '2010-01-01 00:00:00',
'create_user_id ' => 1,
'update_time' => '2010-01-01 00:00:00',
'update_user_id' => 1,
)
);
$this ->assertTrue($newProject->save(false));
}
}
?>
save によって渡された false パラメータは、保存時に正当性が検証されなくなったことを意味します
テスト読み取り:
//新しく作成されたプロジェクトを読み戻します
$retrievedProject=Project::model()->findByPk ( $newProject->id);
$this->assertTrue($retrievedProject インスタンスのプロジェクト);
$this->assertEquals($newProjectName,$retrievedProject->name);
$ newProject ->id は ID の主キーを見つけます
更新と削除
//新しく作成したプロジェクトを更新します
$updatedProjectName = '更新されたテスト プロジェクト 1';
$newProject->name = $ updatedProjectName; $this-
>assertTrue($newProject->save(false));
// 更新が機能したことを確認するためにレコードを再度読み込みます
$updatedProject=Project::model() ->findByPk($newProject->id);
$this->assertTrue($updatedProject インスタンスのプロジェクト);
$this->assertEquals($updatedProjectName,$updatedProject->name);
//プロジェクトを削除します
$newProjectId = $newProject->id;
$this->assertTrue($newProject->delete());
$deletedProject=Project:: model()->findByPk($newProjectId);
$this->assertEquals(NULL,$deletedProject);


次に、スキャフォールディングの crud ジェネレーターを使用して、CRUD を生成されました。




9 バリデーター
YII には多くのバリデーターがあります。使用法:
public function rules()
{
// 注: 定義する必要があるのは、
// ユーザー入力を受け取る属性のルール。
return array(
array('create_user_id, update_user_id', 'numerical','integerO
nly'=>true),
array('name', 'length', 'max'=>128),
array('create_time, update_time', 'safe'),
// 次のルールが search( ).
// 検索すべきではない属性を削除してください。
array('id, name, description, create_time, create_user_id,
update_time, update_user_id', 'safe', 'on'=> ;'search'),
array('name', 'required'),
);
}
'on'=>'insert' など、INSERT In を意味します。この場合、ルールは
array('name','field','field2'...'required'),


10 Create TEST FIXTURE
1 の使用に適しています。 ) protected/tests/fixtures/tbl_project.php、ファイルは

protected/tests/fixtures
の下に作成されます。 たとえば、
return array(
'project1) '=>array(
'name' => 'テスト プロジェクト 1',
'説明' => 'これはテスト プロジェクト 1',
'create_time' => '',
'create_user_id' => '',
'update_time' => '',
),
'project2'=> (
'name' => 'テスト プロジェクト 2',
'description' => 'これはテスト プロジェクト 2',
'create_time' => '',
' create_user_id' => ; '',
'update_time' => '',
'update_user_id' => '',
),
'project3'=>array(
'name' => ; 'テスト プロジェクト 3',
'説明' => 'これはテスト プロジェクト 3',
'create_time' => >'update_time' => '', 'update_user_id' => '',
),
);
その後、tests/unit/ProjectTest.php に作成します:
;?php
class ProjectTest extends CDbTestCase
{
public $fixtures=array
(
'projects'=>'Project',
);
}
フィクスチャを使用するように指示されます。
Use test data
$projectOne = $this->projects['project1'];


11) in テストするときは、テストを使用しますデータベース
protected/config/test.php で、次のように設定します:
return CMap::mergeArray(
require(dirname(__FILE__).'/main.php'),
array(
'components'=>array(
'fixture'=>array(
'class'=>'system.test.CDbFixtureManager',
),
'db'= >array(
'connectionString' => => '[データベースのユーザー名]',
'パスワード' => '[データベースのパスワード]',
'charset' => ' utf8',
),
) ,
)

);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。