20210419のPHPに関する記事は12件です。

【初心者】PHP interface

はじめに phpでオブジェクト指向プログラミングを学んでいる初学者です。interfaceについてまとめてみました。(備忘録) interface基本ルール ・インターフェイスをimplements(実装)したクラスは、class <クラス名> implements <インターフェイス名>となる。 ・インターフェイスで定義されたメソッドは必ず書かなくてはならない。 ・インターフェイス内に処理は書けない。 ・インターフェイスを複数implements(実装)することができる。 ・インターフェイスはクラスではないため、インスタンス化ができない。 interface RockPaperScissors { //インターフェイスでは、実装を伴うメソッドやプロパティの宣言はできない public function rock(); public function paper(); public function scissors(); } class Battle implements RockPaperScissors { public function rock() { echo 'グー'; } public function paper() { echo 'パー'; } public function scissors() { echo 'チョキ'; } } $battle = new Battle(); $battle->rock(); //グー $battle->paper(); //パー $battle->scissors(); //チョキ インターフェイスをimplements(実装)したクラスに、インターフェイスで宣言したメソッドを書かなかった場合 public function scissors()をコメントアウトすると、 interface RockPaperScissors { public function rock(); public function paper(); public function scissors(); } class Battle implements RockPaperScissors { public function rock() { echo 'グー'; } public function paper() { echo 'パー'; } //public function scissors() //{ // echo 'チョキ'; //} } $battle = new Battle(); $battle->rock(); //グー $battle->paper(); //パー $battle->scissors(); //エラー!!! Fatal error: Class Product contains 1 abstract method and must therefore be declared abstract or implement the remaining methods ... インターフェイスで宣言したメソッドを書かなかったため(コメントアウト)、エラーが発生。。 extendsとimplementsでクラスとインターフェイスの併用もできる 例えば、class <クラス名> extends <親クラス名> implements <インターフェイス名>のような記述が可能。 interface RockPaperScissors { public function rock(); } class Fake { public function fakeAction() { echo '出さない'; } } class Battle extends Fake implements RockPaperScissors { public function rock() { echo 'グー'; } } $battle = new Battle(); $battle->rock(); //グー $battle->fakeAction(); //出さない
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

初心者でもDockerでWordPressの環境構築ができた!

はじめに この記事はDockerを軽く勉強しただけの駆け出しエンジニアが、 Docker、WordPressの勉強のために環境構築をする過程・反省を記した備忘録です。 よって、詳しい説明や深い考察などはなく、ただこの経験を忘れたくないなと思い記録に残したものです。 業界でいうと未経験者なので、さほど難しい言葉もないと思います。同じく初学者である方々への励みにもなればなと思います。(Docker用語?は登場します。) ちなみにローカルで勉強用にWordPressを使うだけなら環境構築は Local by Flywheel と検索するとやり方が出てくると思いますが、ソフトウェアをインストールして軽く設定をしてもらうだけですぐにできます。 あくまで私はDockerの勉強も兼ねてやってみようと思った次第です。 経緯 新たにWordPressを学び始めるにあたって、Dockerも絶賛勉強中だったため せっかくならと得た知識をアウトプットする意味でも環境構築をDockerでやってみようと考えました。 ちなみに、何をもとにDockerを学んでいるかというと、 Udemyの「ゼロからはじめる Dockerによるアプリケーション実行環境構築」というコースです。これを現在40%ほど終わらせたところです。(決してステマなどではありません。) 一応リンクも貼っておきます。(ステマではありません。) まずは自力で頑張ってみる(失敗例) まずは作業用のディレクトリを作る(名前はなんでもよい) $ mkdir WordPress/WordPress-lecture 次に、nginxでサーバーを立ち上げるレッスンで使った、バインドマウントを設定してWordPressイメージのコンテナを立ち上げるコードを実行しようとした(macの場合のコード) WordPress-lecture $ docker run --name wordpress-lecture:ver1 \ -v /Users/(PCのユーザー名)/WordPress/WordPress-lecture:/usr/share/wordpress/html:ro -d -p 8081:80 wordpress Dockerコンテナのタグの指定はここではできないためエラー。:ver1の部分を消して再度実行 するとエラーは起きずコンテナは立ち上がったが肝心のサーバーがないため、もちろんブラウザで localhost:8081 にアクセスしてもページは表示されず。。。 コンテナにnginxのイメージを追加すればいいのか?それともnginxのサーバーを立ち上げてそこにWordPressのイメージを追加したほうがいいのか?Apacheじゃなきゃダメなのか?と考えて参考になるものがないかネットを漁ってみたが、学んだことをもう一度調べ直すのにもここまでそれなりの時間を要していたため、早くWordPressの勉強に取り掛かりたかったので結局最後は先輩方の知恵をお借りすることに。。。 完成されたコードを使いWordPressの環境を整える Qiitaで探すと何人かの方々が既に試していらっしゃったのでそのコードを拝借することに 参考にさせていただいた記事 ① https://qiita.com/qpSHiNqp/items/48815ed90bd474064708 ② https://qiita.com/t20190127/items/3abb7c17acdc8543c8ad ③ https://qiita.com/engineer_ikuzou/items/07ff7bd7c9eabf0b3d6b ・①の記事のdocker-compose.ymlの内容を丸パクリさせてもらい、自身のWordPress-lectureディレクトリ内にdocker-compose.ymlファイルを作成 ・自身の現在のディレクトリをコンテナにバインドマウントするための記述 -.:/app をvolumes欄に追加 ・ポート番号8080は別のレッスンで使用していたので8081に変更 最終的なファイルの内容がこちら docker-compose.yml version: '3.1' services: wordpress: image: wordpress restart: always ports: - 8081:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - .:/app - wordpress:/var/www/html - ./wp-content/themes:/var/www/html/wp-content/themes - ./wp-content/plugins:/var/www/html/wp-content/plugins db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db: 今まで丸パクリしたコードでも度々エラーが起きていた経験から、無事に成功するかドキドキしながらも、 docker-compose.ymlファイルを置いているWordPress-lectureディレクトリからコマンドを実行 WordPress-lecture $ docker-compose up -d (-dオプションはバックグラウンドで処理を実行させるためのもの) doneの文字が表示され無事に成功 localhost:8081にアクセスするとWordPressのデフォルト画面が表示された! ここに来るまでにかなりの時間がかかり苦労したため、無事に成功して感動。 エンジニアにとって苦労することが大事と言うけど、本当にその通りで苦労して手に入れた技術とか知識は身体に染み付くと思うし、うまくいった時に感動があるのでますます勉強が好きになるし意欲も高まっていきますね。 ※もし間違い等あれば指摘・訂正していただければと思います。 ということで以上です 終
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel8 Migration 無名クラスの書き方をサポート

Laravel8.37から新しく無名マイグレーションの書き方がサポートされるようになりました。 Laravel9以降はこの書き方がデフォルトになると思われます。 対応Laravelバージョン 8.37.0 以降 9.x 通常のマイグレーションの書き方 database/migrations/2021_04_20_000000_create_tasks_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tasks'); } }; 無名クラスのマイグレーションの書き方 database/migrations/2021_04_20_000000_create_tasks_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tasks'); } }; 変更箇所 変わる部分はここだけです。 // old class CreateTasksTable extends Migration // new return new class extends Migration 現時点では新旧どちらの書き方もサポートされているのでご安心ください。 メリット クラス名の部分が無名クラスになることで、クラス名の競合問題を気にしなくて良くなります。 マイグレーションファイルさえ一意であればok マイグレーションファイル名を変更したいときにクラス名を修正する手間がなくなります。 (同じ名前のマイグレーションファイル書くんか...ってのはありますが...) make:migration $ php artisan make:migration create_tasks_table 執筆時点(2021/4/20)では古い書き方のコードが生成されます。 今後新しいテンプレートになると思われます。 スタブのカスタマイズ 新しい書き方に合わせたい場合は、スタブを変更できます。 $ php artisan stub:publish stub ディレクトリが生成されます。 stubs/migration.create.stub stubs/migration.stub stubs/migration.update.stub この3ファイルのクラス名の定義部分を下記のコードに書き換えればokです! return new class extends Migration 参考 https://laravel-news.com/laravel-anonymous-migrations https://github.com/laravel/framework/pull/36906 https://github.com/laravel/laravel/pull/5585 https://github.com/laravel/laravel/pull/5590
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[PHP] 3桁ごとに数値にカンマを挿入する

概要 金額を表示するために3桁ごとにカンマで区切りたい場合、 PHPだと関数一つで簡単に実現することができます。 例)1000000 → 1,000,000 方法 number_format()を使う <?php $num = 1000000; $result = number_format($num); print_r($result); ?> //結果:1,000,000 文字列でも可能です。 <?php $str = '1000000'; $result = number_format($str); print_r($result); ?> //結果:1,000,000
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

laravel クエリビルダで使用するsave()メソッドってどこに記載されているんだろう?

目的 クエリビルダを使ってDBに値を格納する時のsave()メソッドはどこで定義されているのか気になったので調べてみた 結果 アプリ名ディレクトリ/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.phpの中で定義されていた。 情報 筆者がプライベートで使用しているlaravelの簡単なメモアプリのファイルを用いて下記の内容を確認した。 詳細 Memoモデルファイルを見てみる。 任意のモデルファイルを確認したところ下記のように記載されていた。 アプリ名ディレクトリ/todos/app/Models/Memo.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Memo extends Model { use HasFactory; } extends Modelと記載されているのでModelクラスを継承して上記のMemoクラスが作成されていることがわかる。 use Illuminate\Database\Eloquent\Model;のように継承元が記載されているので当該のクラスを確認してみる。 継承元のファイルを見てみる。 use宣言からファイルパスを確認し、継承元のクラスが記載されているファイルを発見した。 アプリ名ディレクトリ/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.phpに継承元のクラスが記載されていた。内部のメソッドを一部抜粋して記載する。 アプリ名ディレクトリ/todos/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php /** * Save the model to the database. * * @param array $options * @return bool */ public function save(array $options = []) { $this->mergeAttributesFromClassCasts(); $query = $this->newModelQuery(); // If the "saving" event returns false we'll bail out of the save and return // false, indicating that the save failed. This provides a chance for any // listeners to cancel save operations if validations fail or whatever. if ($this->fireModelEvent('saving') === false) { return false; } // If the model already exists in the database we can just update our record // that is already in this database using the current IDs in this "where" // clause to only update this model. Otherwise, we'll just insert them. if ($this->exists) { $saved = $this->isDirty() ? $this->performUpdate($query) : true; } // If the model is brand new, we'll insert it into our database and set the // ID attribute on the model to the value of the newly inserted row's ID // which is typically an auto-increment value managed by the database. else { $saved = $this->performInsert($query); if (! $this->getConnectionName() && $connection = $query->getConnection()) { $this->setConnection($connection->getName()); } } // If the model is successfully saved, we need to do a few more things once // that is done. We will call the "saved" method here to run any actions // we need to happen after a model gets successfully saved right here. if ($saved) { $this->finishSave($options); } return $saved; } save()メソッドを発見した。その他にもクエリビルダで使用するメソッドが多数記載されていた。各モデルクラスがModelクラスを継承してつくられていたからsave()メソッドが使用できたのか。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP初心者向け foreach文の知識

はじめに 入社予定の会社がPHPを使用しており、入社までの勉強としてPHPで学んだことをアウトプットしてきたいと思っています。 今回はPHPのforeach文について、記事にしております。 foreach文とは 配列や連想配列などのまとまったデータに対して、先頭の要素から順に繰り返し処理を行うための構文です。 配列と連想配列とは 以下URLよりご確認できます。 繰り返し処理であるforeach文と、while文・for文の違い whileやforは任意の条件での反復処理が行いやすいのに対し、foreachは配列や連想配列に対しての反復処理が行いやすいという特徴があります。 foreach文では、配列の要素がある分だけ繰り返し処理したらループを抜けることができます。 foreach文の書き方 書き方としては配列と連想配列で使う場合があります。 asの後ろの変数に、ループの度にデータが先頭から順に代入されていきます。 asの後ろの変数名は任意で決めることができます。 (配列で使う場合)index.php <?php foreach ( $配列の変数 as $配列が順に格納される変数 ) { // ループ処理をここへ記述 } ?> (連想配列で使う場合)index.php <?php foreach ($配列の変数 as $キー変数 => $キー名にリンクする配列に格納された値が格納される変数){ //ループで実行される処理 } ?> ※「$キー変数 =>」は省略可能です。 具体的な書き方の例① index.php //配列の定義 $subjects = array('算数', '理科', '国語'); //ループ処理 foreach ($subjects as $subject) { echo $subject; } //出力結果 算数理科国語 index.php //連想配列定義 $scores = array('算数' => 70, '理科' => 90, '国語' => 80); //ループ処理 foreach ($scores as $key => $value){ echo '{$key}は{$value}点です。'; } //出力結果 算数は70点です。理科は90点です。国語は80点です。 具体的な書き方の例② index.php <?php //配列の定義 $prices = array(100, 200, 300, 400); // 金額の合計値を入れるための変数を定義する。そのため0を$totalに代入しておく。 $total = 0; //ループ処理 foreach ($prices as $price) { // 各金額(各配列の要素)を$totalに足していく $total += $price; } echo '合計金額は'.$total.'円です。'; ?> //出力結果 合計金額は1000円です。 参考記事 以上です
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLをローカル上にインストールできない。

MySQLをローカル上にインストールできない 初めにMySQLをインストール brew instal mysql 以下の様なエラーが発生 curl: (22) The requested URL returned error: 404 Error: Failed to download resource "openssl@1.1" Download failed: https://ghcr.io/v2/homebrew/core/openssl%401.1-1.1.1k.big_sur.bottle.tar.gz 調べるとアップデートで解決するかもしれないと言うことで ターミナルでHomebrewを先ずアップデート % brew update Already up-to-date. 再度インストール % mysql --version mysql Ver 8.0.23 for osx10.16 on x86_64 (Homebrew) 成功 ! 何かお気づきのことがありましたらアドバイスいただきたいです!よろしくお願いいたします!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[メモ]windowsでlaravel phpをデバッグするxdebugの設定

初めに 突然laravelアプリの改修をしてと頼まれ 何はともあれ環境構築をし、 「さて、debugをするか」というところでdebugできずに困ってしまったので 次同じようなことにならないように、メモ。 Xdebugのダウンロード phpinfo()で開いた画面をコピーして こちらのサイトに貼り付ける とダウンロードするxdebugのdllバージョンを教えてくれるので php.iniに該当の設定をし、 ここから同じのを探してダウンロード php>extにダウンロードしたxdebug.dllを置く。 xdebugのデフォルトのportが9003に代わっているとかなんとかでなかなか動かず、 調べてためした結果 下記設定を追加し、webサーバーを再起動することでxdebugが使えるようになった。 php.ini ; 追加 [xdebug] zend_extension = C:\PHP\ext\php_xdebug-3.0.4-7.2-vc15-nts-x86_64.dll xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_connect_back = 1 xdebug.mode = debug xdebug.start_with_request = yes xdebug.client_port = 9000 以上。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP: PHPMailer の使い方

こちらでは、 SwiftMailer を使いましたが、PHPMailer を使ってみました。 ライブラリーのインストール sudo apt install libphp-phpmailer composer require vlucas/phpdotenv phpmailer_ex01.py #! /usr/bin/php <?php // ------------------------------------------------------------------ // phpmailer_ex01.py // // Apr/19/2021 // // ------------------------------------------------------------------ use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require '/usr/share/php/libphp-phpmailer/autoload.php'; require_once './vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $from = $_ENV['FROM']; $to = $_ENV['TO']; date_default_timezone_set('Asia/Tokyo'); $today = date ("Y-m-d"); $now = date("Y年m月d日 H時i分s秒"); $mailer = new PHPMailer; $mailer->IsSMTP(); $mailer->Host = $_ENV['SERVER']; $mailer->SMTPAuth = true; $mailer->Username = $_ENV['USR']; $mailer->Password = $_ENV['PASSWORD']; $mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mailer->Port = $_ENV['PORT']; $mailer->CharSet = 'utf-8'; $str_out = ""; $str_out .= 'This is TEST.' . PHP_EOL; $str_out .= 'こんにちは。' . PHP_EOL; $str_out .= '晴れています。' . PHP_EOL; $str_out .= $today . PHP_EOL; $str_out .= $now . PHP_EOL; $mailer->setFrom($from); $mailer->addAddress($to); $mailer->Subject = 'Test Apr/19/2021 ' . date ("H:i:s") ; $mailer->Body = $str_out; if(!$mailer->send()) { echo 'Email is not sent.\n'; echo 'Email error: ' . $mailer->ErrorInfo; } else { echo '*** Email has been sent. ***' . PHP_EOL; } // ------------------------------------------------------------------ ?>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mysqlで50音検索(あ行からわ行まで)

コピペ用です。 $query = "SELECT * FROM example WHERE name REGEXP '^(あ|い|う|え|お|ア|イ|ウ|エ|オ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(か|き|く|け|こ|カ|キ|ク|ケ|コ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(さ|し|す|せ|そ|サ|シ|ス|セ|ソ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(た|ち|つ|て|と|タ|チ|ツ|テ|ト)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(な|に|ぬ|ね|の|ナ|二|ヌ|ネ|ノ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(は|ひ|ふ|へ|ほ|ハ|ヒ|フ|ヘ|ホ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(ま|み|む|め|も|マ|ミ|ム|メ|モ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(や|ゆ|よ|ヤ|ユ|ヨ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(ら|り|る|れ|ろ|ラ|リ|ル|レ|ロ)+';"; $query = "SELECT * FROM example WHERE name REGEXP '^(わ|を|ん|ワ|ヲ|ン)+';";
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WordPress「テンプレートファイル」について

はじめに ・WordPress初心者 ・WordPressのテンプレートフファイルについてよく分からない方 テーマファイルとは テーマファイルとは、WordPressのルールに沿って作成されたPHPファイルのことです。トップページと記事ページでデザインが違う時などに、テンプレートファイルを作成します。WordPressは、アクセセスされたページに合わせたページを表示するために、テーマ内にWordPressのルールに沿ったテンプレートファイル「~.php」を自動的に変更します。 ※主な、WordPressテンプレートファイル一覧 テンプレートファイル名 概要 front-page.php Webサイトのトップページを表示 single.php 投稿の記事ページを表示 page.php 固定ページを表示 category.php カテゴリーページを表示 serach.php 検索結果ページを表示 archive.php 記事一覧ページを表示 404.php 404エラーページを表示 引用: [改訂版]WordPress 仕事の現場でサッと使える! デザイン教科書WordPress 5.x対応版 テンプレート階層について テンプレート階層とは、WordPressがテンプレートファイルを表示する際の優先順を示した、ルールのことです。テーマを作成するにあたりindex.phpが必須になりますが、優先順位は最も低くなります。またindex.phpのみの場合は。すべてのページがindex.phpになります。WordPressはそのルールに従い、優先順が高いがテンプレートファイルのページを表示します。 ※以下は、テンプレートファイルの階層についてまとめたものです。 ●トップページのテンプレート階層 優先順位 テンプレートファイル名 備考 1 front.page.php ー 2 固定ページ表示ルール 「設定」→j表示設定」のj「フロントページの表示」が「固定ページ」に設定されている場合 3 home.php ー 4 index.php ー ●個別ページのテンプレート階層 優先順位 テンプレートファイル名 備考 1 single-[post_type].php 例: 投稿タイプがvideoの場合はsingle-video.php 2 single.php 投稿記事ページ 3 singular.php 投稿や固定ページ、カスタム投稿タイプの記事ページ 4 index.php ー ●カテゴリー別記事一覧ページのテンプレート構造 優先順位 テンプレートファイル名 備考 1 category-{slug}.php 例:カテゴリーのスラッグが"news"の場合はcategory-news.php 2 category.php-{ID} 例:カテゴリーIDが6用のテンプレートはcategory6.php 3 category.php ー 4 index.php ー ●月別記事一覧のテンプレート構造 優先順位 テンプレートファイル名 備考 1 date.php ー 2 archive.php ー 3 index.php ー 引用: [改訂版]WordPress 仕事の現場でサッと使える! デザイン教科書WordPress 5.x対応版 まとめ ・テーマファイルとは、WordPressのルールに沿って作成されたPHPファイルのこと。 ・テンプレート階層とは、WordPressがテンプレートファイルを表示する際の優先順を示したルールのこと。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

4行でTwitterアカウントのフォロー/フォロワー情報一覧を取得する

今回は4行でフォロワー一覧を取得してみる。 とはいへいつものTwittroauthを使うだけだが,abraham/twitteroauthを入れてない人はComposerから入れてください。 APIの制限は1ユーザー当り5000件。それ以上取得したければforでループしたりすればいい。ggrks。尚,oauth_tokenとoauth_token_secretは不要でアクセスできる。 詳しくは↓ composer require abraham/twitteroauth follower一覧取得 require 'vendor/autoload.php'; use Abraham\TwitterOAuth\TwitterOAuth; $connection = new TwitterOAuth("APIKey", "APISecret"); $followers = $connection->get("followers/list",array('cursor' => '-1', 'screen_name' => 'screen_name','count'=>'100')); 単純に 1.オートローディング 2.名前空間のインポート 3.認証情報の設定&インスタンス化 4.取得 以上。 情報はクラスオブジェクトとして返されるので煮るなり焼くなり好きにしてください。 foreach($followers->users as $usr){ echo $usr->screen_name; } follow一覧取得 4行目のfollowers/listをfriends/listに変えるだけ。 My Website&Blog Twitter:@tomox0115
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む