php.ini

Posted by muchag | PHP |
初回投稿:2015-05-29 (金) 12:53:43 | 最終更新:2015-05-29 (金) 12:53:43

初期設定項目。

extention
extension=php_openssl.dll

外部 API からレスポンスがない

Posted by muchag | PHP |
初回投稿:2015-05-29 (金) 12:53:43 | 最終更新:2015-05-29 (金) 12:53:43

外部 API からレスポンスがない

Posted by muchag | PHP |
初回投稿:2015-05-29 (金) 12:50:56 | 最終更新:2015-05-29 (金) 12:50:56

まさかこんなところが原因だとは思わず、24時刊無駄にしちゃった。 😥

【環境】
php:5.4.7
現象

Google Places API を利用しようと思ってコーディングしたところ
file_get_contents の戻り値が false になった。

原因

API 問い合わせ先が https であるのに対して
php の openssl が ON になっていなかった。

解決
(xampp)\php\php.ini
  1. - ;extension=php_openssl.dll
  2. + extension=php_openssl.dll
試行錯誤
cURL

file_get_contents がだめだったので、cURL も試してみたけどだめだった。

ブラウザでチェック

試しに要求 URL をブラウザに直接入力してみると
ちゃんとレスポンスが返ってきて、json 文字列が表示された。

API キー

Google Developer Console を見ると、API キーには4種類
サーバー キー、ブラウザ キー、Android キー、iOS キー
があるようで、サーバーサイドの場合は、サーバー キーが必要なんかと思い
これを取得、設定を変更したけど、ダメ。

解決後調査結果

サーバーサイドスクリプト内であろうが、ブラウザ直接入力であろうが
サーバー キーでも、ブラウザ キーでも、どちらでもレスポンスが返ってきた。

素の php

はた、と思いついて、マッサラのテストページを作り
当該箇所のみを記述して読み込んでみた。

  1. $url  = sprintf( 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&sensor=false&key=%s', $word, $key );
  2. $json = file_get_contents( $url );
  3. echo $json;
Warning

すると、下記のような Warning が。

file_get_contents(): Unable to find the wrapper…

「file_get_contents(): Unable to find the wrapper」

Symfony でも、エラーを表示するように設定しないと時間の無駄だね。。。

Google 先生

で、Google 先生に質問したら、下記記事が一番上に表示された。
YAHOO! JAPAN 知恵袋:PHPでhttps://から始まるURLのオープンに…

こちらの回答に従って、extention を ON にしたところ、無事に解決した。

Posted by muchag | PHP |
初回投稿:2015-05-29 (金) 12:50:56 | 最終更新:2015-05-29 (金) 12:50:56

SQLSTATE[HY000]: General error: 1005 Can’t create table

Posted by muchag | OpenPNE 3.x,Symfony 1.x |
初回投稿:2015-05-21 (木) 22:49:18 | 最終更新:2015-11-17 (火) 18:04:46

【環境】
Symfony:1.4.13
OpnePNE:3.8.15
状況

OpenPNE3 のプラグインを開発していて、DB の再構築を行ったところ
下記のようなエラーメッセージが出た。

エラーメッセージ
SQLSTATE[HY000]: General error: 1005 Can’t create table ‘database_name.#sql-16e8_55a’
(errno: 150).
Failing Query:
“ALTER TABLE op_my_hoge ADD CONSTRAINT op_my_hoge_parent_id_op_my_parent_id FOREIGN KEY (parent_id) REFERENCES op_my_parent(id)”.
Failing Query:
ALTER TABLE op_my_hoge ADD CONSTRAINT op_my_hoge_parent_id_op_my_parent_id FOREIGN KEY (parent_id) REFERENCES op_my_parent(id)
原因

よく見てみると
op_my_hoge.parent_id と op_my_parent.id のデータ型が異なっていた。

Posted by muchag | OpenPNE 3.x,Symfony 1.x |
初回投稿:2015-05-21 (木) 22:49:18 | 最終更新:2015-11-17 (火) 18:04:46

公式チュートリアル

Posted by muchag | Symfony 1.x |
初回投稿:2015-05-14 (木) 14:47:06 | 最終更新:2015-11-20 (金) 17:54:06

公式のチュートリアルに一覧表がないので
一覧のためのページ。

gentle-introduction
  1. 第1章 – symfony の紹介
  2. 第2章 – symfony のコードを探求する
  3. 第3章 – symfony を動かす
  4. 第4章 – ページ作成の基本
  5. 第5章 – symfony を設定する
  6. 第6章 – コントローラーレイヤーの内側
  7. 第7章 – ビューレイヤーの内側
  8. 第8章 – モデルレイヤーの内側 (Doctrine)
  9. 第9章 – リンクとルーティングシステム
  10. 第10章 – フォーム
  11. 第11章 – Eメール
  12. 第12章 – キャッシュ
  13. 第13章 – 国際化とローカライゼーション
  14. 第14章 – Admin ジェネレーター
  15. 第15章 – ユニットテストと機能テスト
  16. 第16章 – アプリケーションの運用ツール
  17. 第17章 – symfony を拡張する
  18. 第18章 – パフォーマンス
  19. 第19章 – symfony の設定ファイルをマスターする
フォーム

目次:Forms
(やっと目次を発見できた・・・)

  1. 第1章 – フォームの作成
  2. 第2章 – フォームのバリデーション
  3. 第3章 – Web デザイナのためのフォーム
  4. 第4章 – Propel との統合
jobeet 1.4 on doctrine
  1. 1日目: プロジェクトを始める
  2. 2日目: プロジェクト
  3. 3日目: データモデル
  4. 4日目: Controller と View
  5. 5日目: ルーティング
  6. 6日目: モデルの詳細
  7. 7日目: カテゴリページで遊ぶ
  8. 8日目: ユニットテスト
  9. 9日: 機能テスト
  10. 10日目: フォーム
  11. 11日目: フォームをテストする
  12. 12日目: アドミンジェネレータ
  13. 13日目: ユーザー
  14. 14日目: フィード
  15. 15日目: Web サービス
  16. 16日目: メーラー
  17. 17日目: 検索
  18. 18日目: AJAX
  19. 19日目: 国際化とローカライゼーション
  20. 20日目: プラグイン
  21. 21日目: キャッシュ
  22. 22日目: デプロイ
  23. 23日目: 別の視点から symfony を見る
1.4 Doctrine

Doctrine のテーブル継承の活用

1.2 Doctrine

Doctrine

Posted by muchag | Symfony 1.x |
初回投稿:2015-05-14 (木) 14:47:06 | 最終更新:2015-11-20 (金) 17:54:06

Symfony 1.x のデバッグ

Posted by muchag | Eclipse,OpenPNE 3.x,Symfony 1.x |
初回投稿:2015-04-27 (月) 12:19:28 | 最終更新:2015-12-17 (木) 18:03:30

自作のプログラムなら簡単にデバッグできるけど
Symfony のようなフレームワークは、よくわからなかったので、調べてみた。

【環境】
Eclipse: Luna Service Release 1 (4.4.1)
Symfony: 1.4.13
デバッグの構成
[実行]-[デバッグの構成] [PHP Web アプリケーション] 初めての場合は、自動で新規構成が表示される。
2つ目以降は、左ペインツールバーにある [新規の起動構成] をクリック。

サーバー
名前

自由。

サーバー

任意に選択。

未設定の場合は、Xdebug 再び! 参照。

ファイル
[参照] から、(Symfony プロジェクト)\web\index.php を選択すると
/(Symfony プロジェクト)/web/index.php
と入力される。

2015-12-17 追記 ここから

今日は、上述のやり方ではできなかった。
Xdebug 再び! に追記しておいたので、参照。

2015-12-17 追記 ここまで
URL
[自動生成] のチェックを外す。
すると、右のテキストボックスがアクティブになる。

左のテキストボックスには「http://localhost/」と入っている。

これで、XAMPP の htdocs までのパスは確保されているので
右のテキストボックスに、それ以下を記述。
「/(appname)/index.php」(自分の環境に適宜合わせる)

適用
[適用] をクリック。

参考サイト

Layer8:Windows上のEclipseでsymfonyをデバッグする方法

Posted by muchag | Eclipse,OpenPNE 3.x,Symfony 1.x |
初回投稿:2015-04-27 (月) 12:19:28 | 最終更新:2015-12-17 (木) 18:03:30

最初の要素と最後の要素判別

Posted by muchag | PHP |
初回投稿:2015-03-26 (木) 16:47:38 | 最終更新:2015-03-26 (木) 16:47:38

foreach で、最初と最後の処理に面倒なことをしていた。
参考サイトを見つけて狂喜!

【環境】
PHP:5.4.7
最初
  1. reset( $array )
最後
  1. end( $array )
  1. foreach ( $array as $val ) {
  2.     if ( $val === reset( $array ) ) echo 'first';
  3.     elseif ( $val === end( $array ) ) echo 'last';
  4.     else echo 'general';
  5. }
参考サイト

FOOTMARK:PHPのforeachで最初と最後を取得する方法

Posted by muchag | PHP |
初回投稿:2015-03-26 (木) 16:47:38 | 最終更新:2015-03-26 (木) 16:47:38

PHPUnit -> 導入(失敗)

Posted by muchag | PHP |
初回投稿:2015-02-22 (日) 16:41:45 | 最終更新:2015-02-23 (月) 11:25:15


公式

【環境】
php:5.4.7
PEAR のアップデート

http://pear.php.net/go-pear.phar を DL してきて、php 実行ディレクトリへ配置。
コマンドプロンプトを [管理者として実行]。

  1. $ php go-pear.phar
  1. Are you installing a system-wide PEAR or a local copy?
  2. (system|local) [system] : ← 何も入力せずに Enter

2015-02-22_PHPUnit_111 の PEAR ディレクトリを指定。
pear.ini を探してもどこにも見つからなかったので困ったけど、
実は新たに作成されるので、php 実行ディレクトリを指定すれば OK。
1 の $prefix を利用して、$prefix\pear.ini と指定。

2015-02-22_PHPUnit_2結果はこうなる。
php 実行ディレクトリに、下記2ファイルが追加される。

pear.ini
PEAR_ENV.reg

2015-02-22_PHPUnit_3最後に上記 PEAR_ENV.regを
ダブルクリックで実行。
PC を再起動して、レジストリ登録を反映。

 

PHPUnit のインストール

参考サイトをなぞってインストールをしようとしたら、
pear.phpunit.de
へ接続できなかった。

PHPUnit の PEAR 経由インストールはできなくなったそうな。
なので、このやり方はここでお終い。。。
 

参考サイト

Web屋のまじめな話:Eclipse/PDT+PHPUnit導入

Posted by muchag | PHP |
初回投稿:2015-02-22 (日) 16:41:45 | 最終更新:2015-02-23 (月) 11:25:15

sprintf

Posted by muchag | PHP |
初回投稿:2015-02-16 (月) 9:31:41 | 最終更新:2018-11-28 (水) 12:56:21

フォーマットを指定して文字列を生成する関数。

PHP マニュアル:sprintf

【環境】
php:5.4.7
書式

string sprintf ( string $format [, mixed $args [, mixed $… ]] )

フォーマット文字列 format に基づき生成された文字列を返します。

第1引数:フォーマット文字列
第2引数以降:配置引数(文字列、数値)。省略可
返り値フォーマット済み文字列
 

フォーマット文字列

一般文字列の中に各指定子を組み込む形式。
正規表現と同じような指定子の使い方。


$str = sprintf( 'リンゴ%d個', 5 );
echo $str;

// 出力結果
リンゴ5個

%d の部分が指定子。
そして、後続引数(5 の部分)にて値を指定。
これで指定子の部分を引数に置換して返してくれる。
 

指定子

詳細はマニュアルで。
 

置換指定子

%d:整数
%+d:整数(符号あり)
%-d:整数(符号あり)
%s:文字列
 

位置指定子

n$:n = 引数の順序。% 直後に配置
%1$d:1番目の引数の整数を指定
%2$s:2番目の引数の文字列を指定


$str = sprintf( '%2$sからもらったリンゴは%1$d個', $num, $name );
echo $str;

// 出力結果
太郎からもらったリンゴは5個

引数の順番が入れ替わっても大丈夫!
 

パディング

桁(文字数)揃え。
0 パディングだけでなく、何でも指定できる。
*n:* = 埋める文字(数字)、n = 桁数
%04d:4桁の0 パディング

0 以外の文字を利用する場合は、
‘# のようにシングルクォーテーションを付けるみたい。
未検証。
 
私が具体的に利用したのは


$year = 2015;
$month = 2;
$str = sprintf( '%04d-%02d', $year, $month );
echo $str;

// 出力結果
2015-02
インデント?

「インデント」で合ってたからしらね。。。 

今日(2018-11-28)、あれこれ見ている中で
知らない指定方法を見つけた。
アシアルブログ:PHPでリフレクション(2010-09-21)


require __DIR__.'/Entity/User.php';

$reflClass = new ReflectionClass('Entity\User');

echo sprintf("%-20s: %s\n", 'getName', $reflClass->getName());
echo sprintf("%-20s: %s\n", 'getNamespaceName', $reflClass->getNamespaceName());
echo sprintf("%-20s: %s\n", 'getShortName', $reflClass->getShortName());
echo sprintf("%-20s: %s\n", 'getFileName', $reflClass->getFileName());

// 出力結果
getName             : Entity\User
getNamespaceName    : Entity
getShortName        : User
getFileName         : /home/fivestar/asial-blog/Entity/User.php

おー こういうのもあるのね。

参考サイト

PHP マニュアル:str_pad

Posted by muchag | PHP |
初回投稿:2015-02-16 (月) 9:31:41 | 最終更新:2018-11-28 (水) 12:56:21

定義済み定数

Posted by muchag | PHP |
初回投稿:2015-02-11 (水) 18:19:13 | 最終更新:2015-02-11 (水) 18:19:13


デバッグ時に、クラス名と行番号を表示できたらな~、と思い調べてみたら、なんとできそう♪

PHP マニュアル
自動的に定義される定数
定義済みの定数

これの「自動的に定義される定数」を利用してやってみたんだけど、うまくいかない。。。
なんでかしらね~。

Posted by muchag | PHP |
初回投稿:2015-02-11 (水) 18:19:13 | 最終更新:2015-02-11 (水) 18:19:13

split

Posted by muchag | PHP |
初回投稿:2015-02-09 (月) 12:47:48 | 最終更新:2015-02-09 (月) 18:02:16

split は、文字列を指定文字で分割して、配列にして返してくれる関数。
 
PHP マニュアル:split

2015-02-09 追記

警告
この関数は PHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。

— snip —

ヒント
split() は PHP 5.3.0 以降で非推奨になりました。この関数のかわりに preg_split() を使うことを推奨します。 正規表現の威力が必要ないのであれば、explode() を使用するほうがより高速です。これは正規表現エンジンの オーバーヘッドを受けません。

PHP マニュアル:split

あw
代わりは・・・explode っと。

ここまで

 

【環境】
[ PHP ] 5.4.7
書式

array split ( string $pattern , string $string [, int $limit = -1 ] )

string を、正規表現によって配列に分割します。

第1引数:大文字小文字を区別する正規表現
第2引数:入力文字列
第3引数:limit が指定された場合、返される配列には 最大 limit の要素が含まれます。この場合、 最後の要素には string の残りの部分が全て 入っています。省略可
返り値文字列の配列
 

返り値

これまで、split を利用するときは、配列で受け取ることしかしてなかったけど、list で受け取ることができることを今日知った。

  1. // デリミタはスラッシュ、ドット、ハイフンのどれかです。
  2. $date = "04/30/1973";
  3. list($month, $day, $year) = split('[/.-]', $date);
  4. echo "Month: $month; Day: $day; Year: $year<br />\n";

戻り値の意味がよくわかる。これは便利。
マニュアルはちゃんと読まないとね。。。

Posted by muchag | PHP |
初回投稿:2015-02-09 (月) 12:47:48 | 最終更新:2015-02-09 (月) 18:02:16
« 前ページへ次ページへ »