PHP(クラス)、vi

今日は、昨日に引き続きPHPはクラスでした。昨日自分の中で多少理解できたはずだったんですが、今日の授業で、はてなマークがめちゃめちゃ飛び出て、久々にわからなすぎてへこみました。

PHP
(クラスの入れ子構造)
■vi



PHP
クラスの便利な使い方として、
配列で深い階層になってしまうようなものでも、
クラスを入れ子構造にすることによってすぐ取り出せます。

例えば、こんな複雑な配列があるとします。

$company = array (
                  'employees' => array (
                                        'employee' => array (
                                                             'id' => 1,
                                                             'name' => 'obt'
                                                    ), array (
                                                              'id' => 2,
                                                              'name' => 'steps'
                                                              )
                                        )
                  );

もしここから、stepsをダイレクトにとりだそうとするとこうなる。

$company['employees']['employee'][1]['name']

目的の物を探すのにたくさんfor文を回さなければならない…これは面倒だよね…
っていうことで、クラスを使ってみよう!!

<?php
//ファイル1(会社)
class Company
{
  private $employees;

  public function getEmployees() {
    return $this->employees;
  }

  public function getEmployee($name) {
    foreach ($this->employees as $employee) {
      if ($employee->getName() == $name) {
        return $employee;
      }
    }
    return false;
  }

  public function setEmployee($employee) {

    $this->employees[] = $employee;
  }
}
?>
<?php
//ファイル2(社員)
class Employee
{
  private $id;
  private $name;

  public function getId(){
    return $this->id;
  }

  function setId($id){
    $this->id = $id;
  }

  function getName(){
    return $this->name;
  }

  function setName($name){
    $this->name = $name;
  }
}
?>
<?php
//ファイル3(実行)
require_once('./class_Company.php');
require_once('./class_Employees.php');

$company = new Company();

$employee = new Employee();//1社員分
$employee->setId(1);
$employee->setName('obt');
$company->setEmployee($employee);

$employee = new Employee();//1社員分
$employee->setId(2);
$employee->setName('steps');
$company->setEmployee($employee);

var_dump($company->getEmployee('steps'));//stepsを取り出す
?>

このように、クラスをうまく使うと簡単に取り出せます。


■vi
□viってなに
emacsと同様に人気のエディタ
Vimはviの派生したもの
•マックにはvimが入ってる

□viの必要性
•たまにemacsが使えなサーバがある
•viで編集するためのコマンドがある
•ちょっとした設定ファイル編集時に知っておくと便利

□viの特徴
•色々なモードがある
 コマンドモード
 lnsertモード
•切替えは i,a等とescで行う


□vimtutor
emacsと同じようなチュートリアル