masayuki5160's diary

名古屋でエンジニアしてます。

クラスとオブジェクトの勉強1

パーフェクトPHP (PERFECT SERIES 3)

新品価格
¥3,771から
(2017/3/19 15:36時点)

これを参考にクラスとオブジェクトについて勉強したのでそのまとめを。


クラスを定義してインスタンス化してみる


<?php
/*PHPでクラスを使用してみる*/

/*クラスの定義*/
class Employee
{
/*メソッドの定義*/
public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*new演算子を用いてEmployeeクラスのインスタンス化*/
$yamada = new Employee();

/*Employeeクラスのメソッドを使用*/
$yamada->work();
?>

PHP_EOLは改行コード。
http://netapeta.sblo.jp/article/3672979.html

上記のように、クラスを使うときにはnew演算子をもちいてクラスをインスタンス化。




アクセス修飾子
メソッドやプロパティがどこからアクセス可能かを表す修飾子。
ちなみに、、
メソッドとは、そのクラスのもつある機能をひとまとめにしたクラスの中の関数。
(クラスの中で定義されてる関数てこと)
プロパティとは、クラスの中で保持している変数のこと。

アクセス修飾子は、
public   クラスの外側からアクセスできる
private   クラスの中からのみアクセスできる
protected クラスの中から、または自分のクラスを継承したクラスの中からのみアクセスできる

の3つ。



<?php
/*PHPでクラスを使用してみる*/
/*アクセス修飾子とプロパティについて(public編)*/
class Employee
{
public $name; //従業員の名前を表すプロパティ
public $state = "働いている"; //従業員の状態を表すプロパティ

public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*Employeeクラスをインスタンス化する*/
$tanaka = new Employee();

/*nameプロパティに値をセット(publicだからクラスの外部からもアクセス可能)*/
$tanaka -> name = "田中";

echo $tanaka->state,$tanaka->name,"さん<br>";
$tanaka->work();
?>

上記はname、stateプロパティをpublicとして外部からもアクセスできるようにした場合。
次に下記のように、
stateプロパティをprivateとして宣言すると、
クラスの外部からはアクセスできなくなる。


<?php
/*PHPでクラスを使用してみる*/
/*アクセス修飾子とプロパティについて(public,private編)*/
class Employee
{
public $name; //従業員の名前を表すプロパティ
private $state = "働いている"; //従業員の状態を表すプロパティ

public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*Employeeクラスをインスタンス化する*/
$tanaka = new Employee();

/*nameプロパティに値をセット(publicだからクラスの外部からもアクセス可能)*/
$tanaka -> name = "田中";

/*stateプロパティはprivateだからクラスの外からアクセスできない*/
echo $tanaka->state;

echo $tanaka->name,"さん<br>";
$tanaka->work();
?>


とりあえずここまで。

クラスとオブジェクトの勉強2

コンストラクタについて

コンストラクタはクラスのインスタンスが作られるタイミングで自動的に呼ばれるメソッドのこと。
実装はこんな感じで。

public function __construct(引数,引数,,,)
{
(実装)
}

コンストラクタは使用することで、
オブジェクトを生成する際に必要なパラメータを引数として受け取り、プロパティにセットすることができる。



<?php
class Employee
{
/*クラス内で使用する定数を宣言*/
/*クラス定数は"クラス名::定数名"とすることでアクセス可能*/
const PARTTIME= 0x01;
const REGULAR = 0x02;
const CONTRACT= 0x04;

/*プロパティの宣言*/
private $name;
private $type;

/*コンストラクタの定義*/
public function __construct($name,$type)
{
$this -> name = $name;
$this -> type = $type;
}

public function showName()
{
echo $this -> name,"さん";
}
}

/*コンストラクタ(クラス定数を利用してインスタンス化)*/
$tanaka = new Employee("田中",Employee::REGULAR);
$tanaka -> showName();
?>

上記ではコンストラクタを使用して、
nameプロパティに値をセットしている。

ふたたびEthna環境構築する

まえやったときはうまくいったのに、
なぜかまたはまったのでまたはまらないためにメモします。。


なにはともあれLAMP環境をつくる。
これは以前メモったのでばっちり。

LAMP環境構築メモ http://d.hatena.ne.jp/masayuki5160/20120218/1329573154




問題はここから。。。



まずPEARをインストールしてアップグレード
※どうもこれがEthnaインストールに失敗していた原因っぽい。たぶんね。

pearをインストール http://d.hatena.ne.jp/oratta/20101013/1286973769


んでチャンネルサーバを設定。
以下サイトを参考に作業。

pearethnaがインストールできない
http://d.hatena.ne.jp/matbluecat/20111213/1323769180



ほんでやっとEthnaインストール!!!
ながかった・・・w

#pear install ethna/ethna

参考 http://labs.gree.jp/Top/Document/20060707.html#o663c8f2



がっつりしらべたわけではないけど、
おそらくPEARが問題だったぽい。
ちゃんとアップデートしなかんてことかな。。


ほんでSmartyの設定もします!

PHPのライブラリディレクトリがどこにあるかしらべる。

# pear config-get php_dir
/usr/share/pear
# cd /usr/share/pear/


Smartyのファイルをダウンロード

# wget http://www.smarty.net/files/Smarty-2.6.26.tar.gz
# tar xvfz Smarty-2.6.26.tar.gz


で、最後にSmartyのファイルのlibsというディレクトリを移動させておわり!

# mv Smarty-2.6.26/libs/ /usr/share/pear/Smarty



これでEthnaのセットアップでもうはまらないはず・・