yu9penguin |> masu/yu
yu9penguin.qrunch.io

[PHP]RubyistがPHPやって陥ったこと

PHP
2018/12/03に投稿

はじめに

Rubyを3ヶ月ほど学習した後に転職。 お世話になる企業ではPHPを使っているとのことなので、爆速でPHPを取得しようと思います。とりあえずProgateやってみた所感と自分用メモの記事です。

PHP 基本文法

変数

$php = "phpはじめました"

変数には$マークを作る。

比較演算子

$i = "5 hello";
var_dump($i);
echo $i."<br>";
if ($i == 5) {
  echo "ok";
}else {
  echo "no";
}

=> ok

これが一番驚きました。なんなんだ...

Rubyみたいに完全一致させたいならば

$i = "5 hello";
var_dump($i);
echo $i."<br>";
if ($i === 5) {
  echo "ok";
}else {
  echo "no";
}

=> no

各クォーテーションの挙動が違うかった

Rubyでのクォーテーション・ダブルクォーテーションと PHPのものでは挙動が違う。

"(ダブルクォーテーション)は特殊文字(\nや\tなど)・変数を展開できる。

'(シングルクォート)はできない。

<?php
   $name = "Rubyist";
  echo "Hello, {$name}";
  // => Hello, Rubyist
?> 

<?php
   $name = "Rubyist";
  echo 'Hello, {$name}';
  // => Hello, {$name}
?>

ダブルクォートは式展開される。シングルクォートは式展開されない。

ここはRubyと同じ。

<?php
  $x = 20;
  if($x > 30){
    echo '$xは30より大きいです';
  }
  if($x > 10){
    echo '$xは10より大きいです';
  }
?>

シングルクォートでなければ出力されない。

連想配列からの値取得

$array('ruby' => 1, 'php' => 2);
echo $array['ruby'];

エラー

Parse error: syntax error, unexpected $end, expecting T_VARIABLE 

基本的には文末の ; 抜けを確認する。

値の取り出し

echo $_POST['name'];

大文字で!

foreach文

<?php
$datas = array('ruby', 'elixir');
foreach($datas as $data){
  echo $data;
}
?>

これはむしろ分かりやすい。英文がそのままの意味。

if文で要素を吐き出す時の分岐

<?php $ruby = 11 ?>
<?php if($ruby > 10): ?>
  <p>10以上</p>
<?php elseif($ruby > 0): ?>
  <p>0以上</p>
<?php else: ?>
  <p>0未満</p>
<?php endif ?>

ifとelseifの条件式の後に : が必要。

オブジェクト指向

クラスの定義

class Thing {
  //ここの処理を記述
}

プロパティの定義。

class Thing {
  private $name;
  private $wieght;
}

privateだとそのクラス内からしかアクセスできない。 もちろん子クラスもアクセスできない。

class Thing {
  protected $name;
  protected $woeght;
}
~~~~~~
//継承先のクラスからも親クラスのプロパティにアクセスできるようになる。
class Food extends Thing {
  private $taste;
}

関数の呼び出し

__construct、ゲッターとセッターというのがある。正直initializeメソッドでプロパティとプロパティ返すメソッド作るのがこれで行う感じ。

class Thing {
  protected $name;
  protected $wieght;

  public function __construct($name, $wieght) {
    $this->name = $name;
    $this->wieght = $wieght;
  }

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

  public function setName($name) {
    $this->name = $name;
  }
}

追記予定。

関連記事

コメントはありません。
yu9penguin |> masu/yu
yu9penguin.qrunch.io
|> Twitter: @yu9penguin |> Qiita: https://qiita.com/yu9penguin |> Webエンジニアです。 使用言語 |> Ruby, PHP, Elixir
フォロー
フォロワー
ブログを開設

クランチで技術ブログを
始めてみませんか?

この先は、クランチへのアカウント登録、及びログインが必要なページになります。

Markdownの書き方
見出し # 見出し(h1)
## 見出し(h2) , ### 見出し(h3) ...
リスト - 箇条書き
   - タブでインデント
番号付きリスト 1. テキスト
2. テキスト
改行 行末に半角スペース2つ
リンクの挿入 [タイトル](https://xxx.com)
引用 > テキスト
コード挿入 ```cpp:title
code
```
画像の挿入 ![代替テキスト](URL "タイトル")
太字 **テキスト**
斜体 *テキスト*
打消し線 ~~テキスト~~
水平線 ***
技術ブログを開設
ログイン