SlideShare a Scribd company logo
1 of 20
Download to read offline
PHP 入門
PHP って何?
●
    プログラミング言語
●
    最初から色々関数が入っててとっつきやすい
●
    プログラミング言語の設計として、汚い部分も
    ある
●
    逆に、 PHP の汚さが分かるところまで、プロ
    グラミングを学ぶと良いと思います
プログラミングを学ぶということ
●
    プログラミングは書けるようになるまで、他の
    プログラミング言語に浮気しないことが重要
    ●
        一個出来るようになれば、次の言語はすぐ出来るよ
        うになる
    ●
        二個出来るようになれば、だいたいどんな言語もす
        ぐ出来るようになる
●
    ひたすらたくさんのコードを書きまくることも
    重要
●
    プログラミングが書けるようになるとはどうい
    ことか?
    ●
        「式」と「文」の理解 (基礎力)
    ●
        思い通りの「処理」と「値」を定義できて、それら
        の「整理と名前付け」が出来る (応用力)
ロードマップ




   https://cacoo.com/diagrams/KEzduTiEHpW5dTYB
プログラミングを学ぶということ
●
    重要なのでもう一度まとめます
    ●
        過程
        –   書けるようになるまで浮気しない
        –   ひたすら書く
        –   辛くなったら、ロードマップを思い出す
    ●
        ゴール
        –   式と文の理解
        –   値の定義の上達
        –   処理の定義の上達
        –   値、処理の命名と整理能力
Hello world!
    <?

    echo "Hello world!n";




●
    PHP の実行の仕方を覚える
値
    <?

    echo   "hoge hogen";
    echo   1;
    echo   true;
    echo   null;




●
    echo の横に値を書くと echo によってその値
    が出力されることを理解する
●
    echo を使った出力だと分かりにくいので次の
    ページへ
値
    <?

    var_dump("hoge hogen");
    var_dump(1);
    var_dump(true);
    var_dump(null);




●
    echo の出力は null と false と “” の区別が出
    来なかったりする
●
    var_dump を使うと値の詳細を出力することが
    出来る
●
    文字列、数値、真偽値、 null をマスターしよ
    う
演算子
    <?

    var_dump(1 + 1);          # +演算子
    var_dump(1 . '2');        # .演算子
    var_dump(true and false); # and演算子


●
    演算子は、両辺に値を取って別の値を生成する
●
    + - / * % and or は良く使うので覚える
●
    ポイント
     ●
         「1」も値だけど「1 + 1」も「2」という値を生成
         する
     ●
         値の生成は実行時に演算子が「評価」されることで
         行われる
     ●
         var_dump はそこにある値を出力するだけ
演算子
    <?

    var_dump(1 + 1 * 3);




●
    演算子には、優先順位があって、実行時に優先
    順位が高いほうから評価されて値が生成される
    ●
         1 * 3 が評価されて 3 が生成され
    ●
         1 + 3 が評価されて 4 が生成される
●
    () を使うと、優先順位の影響を受けない
変数
    <?

    $hoge = "Hello world!n";

    var_dump($hoge);



●
    変数は代入 (=) によって値を記憶し、実行時に
    「評価」されたときに記憶した値を生成する
変数 & 演算子
    <?

    $hoge = 1 * 2;
    $fuga = 3 + $hoge;

    var_dump($fuga);



●
    1 * 2 の結果が評価され、 $hoge に記憶され
●
    $hoge が評価され 2 を生成する
●
    3 + 2 が評価され 5 を生成する
●
    5 が $fuga に記憶され
●
    $fuga が評価され 5 を生成する
●
    var_dump が 5 を出力する
関数
    <?

    function fn($a, $b) { # 処理の保存
      $c = $a + $b;
      return $c * 4;
    }

    var_dump(fn(1, 2)); # 関数の評価
    var_dump(fn(3, 4));


●
    関数は処理を保存し、 return 文で値を「返
    す」
●
    関数は () に値のリストを記述することで評価
    することができる
●
    関数は評価されると return 文で返された値を
    生成する
演算子 & 関数
    <?

    function add($a, $b) { return $a + $b; }
    function mul($a, $b) { return $a * $b; }

    var_dump((1 + 1) * 3 * 4);
    var_dump(mul(mul(add(1, 1), 3), 4));




●
    演算子も関数も「値を使って、評価されると値
    を生成する」という意味で本質的には文法は違
    うが同じようなものである
組み込み関数
    <?

    var_dump(file_get_contents('http://www.google.com/'));




●
    基本的にプログラミング言語は、値を使って演
    算子や関数を評価して値を生成するという機能
    しかない
●
    それ以外の機能は、組み込み関数という形で提
    供される
●
    var_dump や file_get_contents が組み込み
    関数
式
    <?

    var_dump('hoge');    # リテラル式
    var_dump(1 + 1);     # 二項式
    var_dump(add(1, 1)); # 関数呼び出し式




●
    式とは
    ●
         評価され値を生成するプログラム上の単位
●
    値を使う場所には、常に式を置くことが可能
    (重要!!)
条件分岐
    <?

    if (1 + 1) {
      var_dump('ok');
    }
    else {
      var_dump('ng');
    }




●
    if 文を使うと、式が生成する値を使って実行す
    る処理を切り替えることが出来る
     ●
         式の値が '' や 0 や null や false 以外の場合は else
         よりの前の処理を実行する
●
    switch 文もある
繰り返し
    <?

    $hoge = 10;

    while ($hoge) {
      $hoge = $hoge - 1;
      var_dump($hoge);
    }




●
    while 文を使うと、 if 文と同様に式を評価して
    式の値が '' や 0 や null や false になるまで処
    理を繰り返し実行してくれる
データ構造
    <?

    $arr = arary(1, 2, array(3, 3, 1 + 1 * 1));
    var_dump($arr[2][2]);




●
    配列や連想配列を使うと、複数の値を階層的に
    持った値を作ることができる
●
    配列も値であり、 array() も値であり配列リテ
    ラルという式である
オブジェクト
<?

class Hoge {
  var $a;
  var $b;
  function __construct($a, $b) {
    $this->$a = $a;
    $this->$b = $b;
  }
  function calc() { return $a + $b; }
}

$hoge = new Hoge(1, 3);
var_dump($hoge->calc());


●
    あるデータ構造だけに対して評価できる関数を
    作るための仕組みがオブジェクトである
●
    オブジェクトも値である, new も式である

More Related Content

What's hot

PHPのタイプヒンティング
PHPのタイプヒンティングPHPのタイプヒンティング
PHPのタイプヒンティングHidetaka Okamoto
 
クロージャー
クロージャークロージャー
クロージャー1000 VICKY
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4Kenta Hattori
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpTomohiro Kumagai
 
Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜aiya000
 
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswiftSwift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswiftTomohiro Kumagai
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
再考:列挙型
再考:列挙型再考:列挙型
再考:列挙型do_aki
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回Yuma Yoshimoto
 
RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数Altech Takeno
 
Gen-Template-for-Perl
Gen-Template-for-PerlGen-Template-for-Perl
Gen-Template-for-Perlnasneg
 
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsapSwift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsapTomohiro Kumagai
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語uru nru
 
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2Java8 lambdas chapter1_2
Java8 lambdas chapter1_2yo0824
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDAkio Ishida
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室Yusuke Ando
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
20190530-DesignOneGo01
20190530-DesignOneGo0120190530-DesignOneGo01
20190530-DesignOneGo01Kento Sato
 

What's hot (20)

PHPのタイプヒンティング
PHPのタイプヒンティングPHPのタイプヒンティング
PHPのタイプヒンティング
 
クロージャー
クロージャークロージャー
クロージャー
 
PHP7を魔改造した話
PHP7を魔改造した話PHP7を魔改造した話
PHP7を魔改造した話
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
 
Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜
 
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswiftSwift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
再考:列挙型
再考:列挙型再考:列挙型
再考:列挙型
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回
 
RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数
 
Gen-Template-for-Perl
Gen-Template-for-PerlGen-Template-for-Perl
Gen-Template-for-Perl
 
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsapSwift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
Swift 3.0 の新機能 - 追加・変更まわりだけ、ざっくり紹介 2 #devsap
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語
 
Java8 lambdas chapter1_2
Java8 lambdas chapter1_2Java8 lambdas chapter1_2
Java8 lambdas chapter1_2
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
20190530-DesignOneGo01
20190530-DesignOneGo0120190530-DesignOneGo01
20190530-DesignOneGo01
 

Similar to PHP 入門

知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
はじめてのPHP
はじめてのPHPはじめてのPHP
はじめてのPHPGo Tanaka
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜Hideo Kashioka
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回Shigeharu Yamaoka
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文Appresso Engineering Team
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>LaravelハンズオンセミナーTatsuyoshi Mashiko
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)Masahiro Hayashi
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)noldor
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerHideo Kashioka
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„和弘 井之上
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Ransui Iso
 

Similar to PHP 入門 (20)

知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
はじめてのPHP
はじめてのPHPはじめてのPHP
はじめてのPHP
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 
WCO2012「PHP教室」
WCO2012「PHP教室」WCO2012「PHP教室」
WCO2012「PHP教室」
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
 

More from Shuhei Iitsuka

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...Shuhei Iitsuka
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorShuhei Iitsuka
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会Shuhei Iitsuka
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networksShuhei Iitsuka
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous spaceShuhei Iitsuka
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムShuhei Iitsuka
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Shuhei Iitsuka
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web developmentShuhei Iitsuka
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門Shuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...Shuhei Iitsuka
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataShuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ RuleShuhei Iitsuka
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話Shuhei Iitsuka
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得るShuhei Iitsuka
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザインShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 Shuhei Iitsuka
 

More from Shuhei Iitsuka (20)

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behavior
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous space
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システム
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web development
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得る
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくる
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザイン
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会
 

PHP 入門

  • 2. PHP って何? ● プログラミング言語 ● 最初から色々関数が入っててとっつきやすい ● プログラミング言語の設計として、汚い部分も ある ● 逆に、 PHP の汚さが分かるところまで、プロ グラミングを学ぶと良いと思います
  • 3. プログラミングを学ぶということ ● プログラミングは書けるようになるまで、他の プログラミング言語に浮気しないことが重要 ● 一個出来るようになれば、次の言語はすぐ出来るよ うになる ● 二個出来るようになれば、だいたいどんな言語もす ぐ出来るようになる ● ひたすらたくさんのコードを書きまくることも 重要 ● プログラミングが書けるようになるとはどうい ことか? ● 「式」と「文」の理解 (基礎力) ● 思い通りの「処理」と「値」を定義できて、それら の「整理と名前付け」が出来る (応用力)
  • 4. ロードマップ https://cacoo.com/diagrams/KEzduTiEHpW5dTYB
  • 5. プログラミングを学ぶということ ● 重要なのでもう一度まとめます ● 過程 – 書けるようになるまで浮気しない – ひたすら書く – 辛くなったら、ロードマップを思い出す ● ゴール – 式と文の理解 – 値の定義の上達 – 処理の定義の上達 – 値、処理の命名と整理能力
  • 6. Hello world! <? echo "Hello world!n"; ● PHP の実行の仕方を覚える
  • 7. <? echo "hoge hogen"; echo 1; echo true; echo null; ● echo の横に値を書くと echo によってその値 が出力されることを理解する ● echo を使った出力だと分かりにくいので次の ページへ
  • 8. <? var_dump("hoge hogen"); var_dump(1); var_dump(true); var_dump(null); ● echo の出力は null と false と “” の区別が出 来なかったりする ● var_dump を使うと値の詳細を出力することが 出来る ● 文字列、数値、真偽値、 null をマスターしよ う
  • 9. 演算子 <? var_dump(1 + 1); # +演算子 var_dump(1 . '2'); # .演算子 var_dump(true and false); # and演算子 ● 演算子は、両辺に値を取って別の値を生成する ● + - / * % and or は良く使うので覚える ● ポイント ● 「1」も値だけど「1 + 1」も「2」という値を生成 する ● 値の生成は実行時に演算子が「評価」されることで 行われる ● var_dump はそこにある値を出力するだけ
  • 10. 演算子 <? var_dump(1 + 1 * 3); ● 演算子には、優先順位があって、実行時に優先 順位が高いほうから評価されて値が生成される ● 1 * 3 が評価されて 3 が生成され ● 1 + 3 が評価されて 4 が生成される ● () を使うと、優先順位の影響を受けない
  • 11. 変数 <? $hoge = "Hello world!n"; var_dump($hoge); ● 変数は代入 (=) によって値を記憶し、実行時に 「評価」されたときに記憶した値を生成する
  • 12. 変数 & 演算子 <? $hoge = 1 * 2; $fuga = 3 + $hoge; var_dump($fuga); ● 1 * 2 の結果が評価され、 $hoge に記憶され ● $hoge が評価され 2 を生成する ● 3 + 2 が評価され 5 を生成する ● 5 が $fuga に記憶され ● $fuga が評価され 5 を生成する ● var_dump が 5 を出力する
  • 13. 関数 <? function fn($a, $b) { # 処理の保存 $c = $a + $b; return $c * 4; } var_dump(fn(1, 2)); # 関数の評価 var_dump(fn(3, 4)); ● 関数は処理を保存し、 return 文で値を「返 す」 ● 関数は () に値のリストを記述することで評価 することができる ● 関数は評価されると return 文で返された値を 生成する
  • 14. 演算子 & 関数 <? function add($a, $b) { return $a + $b; } function mul($a, $b) { return $a * $b; } var_dump((1 + 1) * 3 * 4); var_dump(mul(mul(add(1, 1), 3), 4)); ● 演算子も関数も「値を使って、評価されると値 を生成する」という意味で本質的には文法は違 うが同じようなものである
  • 15. 組み込み関数 <? var_dump(file_get_contents('http://www.google.com/')); ● 基本的にプログラミング言語は、値を使って演 算子や関数を評価して値を生成するという機能 しかない ● それ以外の機能は、組み込み関数という形で提 供される ● var_dump や file_get_contents が組み込み 関数
  • 16. <? var_dump('hoge'); # リテラル式 var_dump(1 + 1); # 二項式 var_dump(add(1, 1)); # 関数呼び出し式 ● 式とは ● 評価され値を生成するプログラム上の単位 ● 値を使う場所には、常に式を置くことが可能 (重要!!)
  • 17. 条件分岐 <? if (1 + 1) { var_dump('ok'); } else { var_dump('ng'); } ● if 文を使うと、式が生成する値を使って実行す る処理を切り替えることが出来る ● 式の値が '' や 0 や null や false 以外の場合は else よりの前の処理を実行する ● switch 文もある
  • 18. 繰り返し <? $hoge = 10; while ($hoge) { $hoge = $hoge - 1; var_dump($hoge); } ● while 文を使うと、 if 文と同様に式を評価して 式の値が '' や 0 や null や false になるまで処 理を繰り返し実行してくれる
  • 19. データ構造 <? $arr = arary(1, 2, array(3, 3, 1 + 1 * 1)); var_dump($arr[2][2]); ● 配列や連想配列を使うと、複数の値を階層的に 持った値を作ることができる ● 配列も値であり、 array() も値であり配列リテ ラルという式である
  • 20. オブジェクト <? class Hoge { var $a; var $b; function __construct($a, $b) { $this->$a = $a; $this->$b = $b; } function calc() { return $a + $b; } } $hoge = new Hoge(1, 3); var_dump($hoge->calc()); ● あるデータ構造だけに対して評価できる関数を 作るための仕組みがオブジェクトである ● オブジェクトも値である, new も式である