{"action":"created","issue":{"url":"https://api.github.com/repos/thori0908/training/issues/30","labels_url":"https://api.github.com/repos/thori0908/training/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/thori0908/training/issues/30/comments","events_url":"https://api.github.com/repos/thori0908/training/issues/30/events","html_url":"https://github.com/thori0908/training/issues/30","id":39792436,"number":30,"title":"サーバサイド - PHP - オブジェクト指向","user":{"login":"fr-sasaki","id":4498464,"avatar_url":"https://avatars.githubusercontent.com/u/4498464?v=3","gravatar_id":"","url":"https://api.github.com/users/fr-sasaki","html_url":"https://github.com/fr-sasaki","followers_url":"https://api.github.com/users/fr-sasaki/followers","following_url":"https://api.github.com/users/fr-sasaki/following{/other_user}","gists_url":"https://api.github.com/users/fr-sasaki/gists{/gist_id}","starred_url":"https://api.github.com/users/fr-sasaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fr-sasaki/subscriptions","organizations_url":"https://api.github.com/users/fr-sasaki/orgs","repos_url":"https://api.github.com/users/fr-sasaki/repos","events_url":"https://api.github.com/users/fr-sasaki/events{/privacy}","received_events_url":"https://api.github.com/users/fr-sasaki/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/thori0908/training/labels/required","name":"required","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2014-08-08T04:56:07Z","updated_at":"2015-03-11T10:39:00Z","closed_at":null,"body":"### 概要\r\nクラスベースのオブジェクト指向について学びます。\r\n\r\n### 目的\r\nクラスベースのオブジェクト指向を用いてプログラミングができるようになる。\r\n\r\n適切にファイルを分割し、ソースコードのメンテナンス性を高めることができる。\r\n\r\n### ■課題\r\n\r\n#### 課題1\r\n下記用語について調べてください。\r\n- オブジェクト\r\n- クラス\r\n - プロパティ\r\n - メソッド\r\n - コンストラクタ/デストラクタ\r\n - カプセル化\r\n- インスタンス化\r\n- アクセス修飾子\r\n- abstract修飾子\r\n- staticキーワード\r\n- getter/setter\r\n- 継承\r\n - オーバーライド\r\n - parent\r\n\r\n#### 課題2\r\n下記制御構造について調べてください。\r\n- require\r\n- require_once\r\n- include\r\n- include_once\r\n\r\n#### 課題3\r\n※ここからは「サーバサイド - PHP - フォーム作成」の課題で作成したフォームを使用します。\r\n\r\n例を参考に、制御構造を用いて各画面2ファイル以上に分割してください。\r\n\r\n#### (例\r\n\r\n- confirm.php(元ファイル)\r\n```php\r\n<?php\r\nfunction fullName($last_name, $first_name) {\r\n    return sprintf('%s %s', $last_name, $first_name);\r\n}\r\n\r\n$full_name = fullName($_POST['last_name'], $_POST['first_name']);\r\n?>\r\n<html>\r\n～ 省略 ～\r\n名前：<?php echo $full_name ?>\r\n～ 省略 ～\r\n</html>\r\n```\r\n#### ↓2分割後\r\n\r\n- confirm.php(元ファイルからphpのロジック部を切り出したファイル)\r\n```php\r\n<?php\r\nfunction fullName($last_name, $first_name) {\r\n    return sprintf('%s %s', $last_name, $first_name);\r\n}\r\n\r\n$full_name = fullName($_POST['last_name'], $_POST['first_name']);\r\n\r\ninclude 'profile.html.php';\r\n```\r\n\r\n- confirm.html.php(元ファイルからhtml部分を切り出したファイル)\r\n```php\r\n<html>\r\n～ 省略 ～\r\n名前：<?php echo $full_name ?>\r\n～ 省略 ～\r\n</html>\r\n```\r\n#### 課題4\r\nフォームに入力された項目を保持するクラスを下記ルールに従って設計、実装してください。\r\n\r\n- 完全コンストラクタパターンを用いること\r\n- フルネームを取得するメソッドを実装すること\r\n- 1クラス1ファイルに分割すること(クラス名がProfileであれば、profile.phpというファイル名とする)\r\n\r\nまた、今回作成したクラスを用い表示処理を行ってください。\r\n\r\n#### (例\r\n```php\r\n$profile = new Profile($_POST['mail_address']);\r\n```\r\n\r\n```php\r\n<html>\r\n～ 省略 ～\r\nメールアドレス：<?php echo $profile->getMailAddress() ?>\r\n～ 省略 ～\r\n</html>\r\n```"},"comment":{"url":"https://api.github.com/repos/thori0908/training/issues/comments/78239915","html_url":"https://github.com/thori0908/training/issues/30#issuecomment-78239915","issue_url":"https://api.github.com/repos/thori0908/training/issues/30","id":78239915,"user":{"login":"thori0908","id":7833726,"avatar_url":"https://avatars.githubusercontent.com/u/7833726?v=3","gravatar_id":"","url":"https://api.github.com/users/thori0908","html_url":"https://github.com/thori0908","followers_url":"https://api.github.com/users/thori0908/followers","following_url":"https://api.github.com/users/thori0908/following{/other_user}","gists_url":"https://api.github.com/users/thori0908/gists{/gist_id}","starred_url":"https://api.github.com/users/thori0908/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thori0908/subscriptions","organizations_url":"https://api.github.com/users/thori0908/orgs","repos_url":"https://api.github.com/users/thori0908/repos","events_url":"https://api.github.com/users/thori0908/events{/privacy}","received_events_url":"https://api.github.com/users/thori0908/received_events","type":"User","site_admin":false},"created_at":"2015-03-11T10:39:00Z","updated_at":"2015-03-11T10:39:00Z","body":"#### 課題1\r\n下記用語について調べてください。\r\n- オブジェクト\r\n- クラス\r\n - プロパティ\r\n - メソッド\r\n - コンストラクタ/デストラクタ\r\n - カプセル化\r\n- インスタンス化\r\n- アクセス修飾子\r\n- abstract修飾子\r\n- staticキーワード\r\n- getter/setter\r\n- 継承\r\n - オーバーライド\r\n - parent"}}