Slide 1

Slide 1 text

register_activation_hook関数の使い方で みるPHPの文法おさらい 2017年7月28日(金) in WordBench大阪

Slide 2

Slide 2 text

Who are you? 福井 洋(@echizenya_yota) https://twitter.com/echizenya_yota http://e-yota.com/ WordCamp Kyoto 2017 実行委員(スポンサーチーム担当) https://2017.kyoto.wordcamp.org/organizers/ http://e-yota.com/webservice/suponsors-organizer/ 普段はWordPressサイトのサーバー構築のお手伝いと個人レッスン、Web初心者向け にプログラミングの個人レッスンをしている個人事業主です。

Slide 3

Slide 3 text

WordCamp Kyoto 2017 コントリデイ 本日のネタはwckyoto2017の2日目に行われたコントリビュターデイで、WordPress Codexを編集したときの内容に基づいてお話します。

Slide 4

Slide 4 text

実際に自分が編集したところ

Slide 5

Slide 5 text

register_activation_hook関数とは プラグインが有効化されたときに実行される関数を登録する関数。

Slide 6

Slide 6 text

register_activation_hook関数の具体例 class WPWA_User_Manager { public function __construct() { // 初期化コード register_activation_hook( __FILE__ , array( $this, 'add_application_user_roles' ) ); } public function add_application_user_roles() { add_role( 'follower', 'Follower', array( 'read' => true ) ); add_role( 'developer', 'Developer', array( 'read' => true ) ); add_role( 'member', 'Member', array( 'read' => true ) ); } } $user_manage = new WPWA_User_Manager(); 詳しくはこちら→ https://goo.gl/Y83PGS プラグインが有効化されたときに、 Follower、Developper、Memberと いうユーザーロールが追加される

Slide 7

Slide 7 text

register_activation_hook関数の2つの使い方 ● 関数を使う場合(クラスメソッドを使わない場合) ● 関数を使わない場合(クラスメソッドを使う場合) →今回は関数を使わない場合(クラスメソッドを使う場合)でPHP の文法について説明

Slide 8

Slide 8 text

オブジェクトとは? class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { } } →データとデータの処理方法の定義書 (説明の便宜上、架空のWordPress関数、wp_exampleを使用します)

Slide 9

Slide 9 text

クラス定義 class Hoge { } →定義するクラス名を宣言

Slide 10

Slide 10 text

コンストラクタ(初期化処理) class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } } →Hogeクラスが実行されると必ず__construct()というメソッドが呼び出される

Slide 11

Slide 11 text

__FILE__(マジック定数) class hoge { public function __construct() { // 初期化コード wp_example(__FILE__, array( $this, 'fuga' ) ); } } →ファイルのフルパスとファイル名。 自分の環境だと/var/www/wordpress/wp-content/plugins/wpwa-user-manager/class-wpwa-user-manager.php と言う意味。

Slide 12

Slide 12 text

配列 class Hoge { public function __construct() { // 初期化コード wp_example(__FILE__, array( $this, 'fuga' ) ); } } →変数を複数入れられる「箱」のようなもの

Slide 13

Slide 13 text

擬似変数 class Hoge { public function __construct() { // 初期化コード wp_example(__FILE__, array( $this, 'fuga' ) ); } } →クラスの中のメソッドやプロパティ(クラス変数)みたいにアクセスする時に使うキー ワード

Slide 14

Slide 14 text

メソッド class Hoge { public function __construct() { // 初期化コード wp_example( __FILE__ , array( $this, ‘fuga’) ); } public function fuga() { echo “My Name is Wapuu!”; } } →クラス内で使う関数

Slide 15

Slide 15 text

インスタンス化とは? class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { echo “My Name is Wapuu!”; } } $hogefuga = new Hoge(); →クラスに定義されているデータを実際に持たせたデータ

Slide 16

Slide 16 text

newキーワード class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { echo “My Name is Wapuu!”; } } $hogefuga = new Hoge(); →クラスに定義されている内容を実際に持たせたデータを呼び出す時に使うキーワード

Slide 17

Slide 17 text

オブジェクト変数 class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { echo “My Name is Wapuu”; } } $hogefuga = new Hoge(); →クラスに定義されている内容を実際に持つ変数

Slide 18

Slide 18 text

オブジェクトとインスタンスの使用例 class Hoge { public function __construct() { wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { echo “My Name is Wapuu!”; } } $hogefuga = new Hoge(); $hogefuga->fuga(); →出力結果: My Name is Wapuu!

Slide 19

Slide 19 text

意味の分からない変数はデバッグしよう! class Hoge { public function __construct() { var_dump(__FILE__) exit; wp_example(__FILE__, array( $this, 'fuga' ) ); } public function fuga() { echo “My Name is Wapuu!”; } } $hogefuga = new Hoge(); $hogefuga->fuga(); →出力結果: /var/www/wordpress/wp-content/plugins/wpwa-user-manager/class-wpwa-user-manager.php

Slide 20

Slide 20 text

公式ドキュメントを読もう! http://php.net/

Slide 21

Slide 21 text

本で調べよう! https://bookmeter.com/books/11600128

Slide 22

Slide 22 text

それでも分からなければdotinstallを利用しよう http://dotinstall.com/lessons/basic_php_v2

Slide 23

Slide 23 text

ご清聴ありがとうございました!