ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2012年10月27日土曜日

Fuel PHP で Ajax

Document や本を読んでいてもどうも明確な答えが得られなくてはまっていましたが, どうやら読み違えと知識不足ではまっていました。

目標:
jQuery の Ajax $.ajax でリクエストを投げて, Fuel PHP のコントローラで処理
結果を json で返して, そのデータを success で処理する

このとき, ページのリフレッシュはしない


※jQuery の設定や, Fuel PHP の基礎知識は前提とします
※ ログイン処理を省きます


・まずはまってしまうのは, 通常のcontroller つまり, Controller_Template, Controller
を extends してつくる 通常のページコントローラ で action_xxx() をつくるのではないということ

->  つまり, action_xxx() で処理をして, ページを返すという処理とは, クラスを切り離します

->  Controller は, ページ(view)を返して, そのview (.php) を処理するのでページのまるごとリフレッシュ


・ Controller_Rest を拡張したクラスを作りましょう

-> ここがポイントです, Restful がどうだとか, いろいろ書いてますが 言いたいことは, ページまるごとではなく, json, jsonp, XML などの形式でデータを返したい場合には, このクラスの拡張クラスをページで利用するコントローラとは別で用意します

->  もちろんこうした処理を返すクラスを自作するのもアリですが, Controller_Rest  は簡単です



ex)  POST リクエストをして, そのデータをjson で返し, そのデータをダイアログで表示

●JavaScript サイド


$.ajax({
                type: "POST",
                url: "/resourcerest/create.json",
                dataType : 'json',
                data: "id="  + $("#product").val() + "&key=" +$("#new_key").val(),
                success: function( res )
                {
                    alert(res.key);
                }
             });

※jQuery のAjax 関数です, POST リクエストを, resourcerest というコントローラの create という関数にリクエストを出しています。

data には key=value 形式で, 文字列データを渡しています

success 関数で 返ってきたデータを表示しています


●PHP サイド


<?php

class Controller_Resourcerest extends \Fuel\Core\Controller_Rest
{
    public function post_create()
    {
        $name = $_POST['key'];
        $data = array('key' => $name);
        return $this->response($data, 200);
    }
}
?>


※ Controller_Rest を拡張した処理関数です。 通常のページの処理とは違いますね。
さて処理関数ですが

リクエストのタイプ_処理名   という形になります  ここでは, POST リクエストの create という処理名で jQuery 側で書いたので post_create という関数になります

残りは通常の処理と同じです, $data に, array データを入れると, json 形式で返してくれます

(※ create.json にしているので json になります XML の場合は create.xml とかになります)


●実行してみた
作者が個人的に作っているサイトの一部です




テキストボックス(id=new_key)に入れたデータをそのままjson 形式で返して, 表示してみました

2012年9月17日月曜日

NetBeans で Fuel PHP

最近, ちょっとしたWebアプリを作るのに, 何かいい Framework はないかなと探していたところに, Fuel PHP というのを見つけました。  どうやら日本語の書籍もでているみたいで。

早速, 開発環境だけを構築してみることにしました。

環境
Windows 7 64bit
Fuel PHP  1.3
Xampp      1.7
Net Beans 7.1.2

とりあえず, PHP の環境が必要ですが, 以前書いたブログで確認してください。

NetBeansでPHP

さてまず, NetBeans で PHP のプロジェクトをつくっておきましよう

"ファイル" -> "新規プロジェクト" -> "PHP"   でPHPプロジェクトをつくります

※ここでは, FuelTest としました。

Fuel PHP をダウンロードして解凍します。

解凍したフォルダ fuelphp-1.3 の中で必要なフォルダは, 以下の2つです


fuel          :    コアPHPクラスが入っている
public       :    静的ファイルなど実際に公開する必要のあるフォルダ


この2つのフォルダを先ほどの PHPプロジェクトの中に入れましょう


こんな感じです。
FuelTest というプロジェクト内に, 先ほどの fuel, public のフォルダをつっこみました。

※本番環境では, public のみを公開設定にする必要があります。
Apache の VirtualHost とかで public をDocumentRoot にしなくてはなりません

これで動作します。早速
XAMPP から Apache を立ち上げて, アクセスしてみましょう


http://localhost/FuelTest/public

私の場合はこのURLになります。

アクセスすると, 以下のような welcome ファイルが表示されます


これで開発環境構築は終了です。

NetBeans のIDE に取り込んだことで, 設定ファイル config.php や データベースアクセス db.php
それに, 通常のPHP にも, インテリセンスが使えるので, 便利です。


2012年5月17日木曜日

NetBeans で PHP(デバッガー編)

前回に引き続き, NetBeans です。 PHPです。

インストールを終えました。 これで, 通常の PHPスクリプトを書く環境は整いましたが, 実際の開発環境では, やっぱり debug したい。 いや, debug がないと, きつい。 でなきゃ, Java に帰りたい。

と思うわけです。 では早速 デバッグの設定をしましょう。

※このあたりの話は, Net Beans のマニュアルに書いてあります。
(確か英語だった気がします)

1.  PHP の XDebug の設定をする(php.ini の編集)


2.  NetBeans の実行設定をする


この2つで, NetBeans 上で, PHP のデバッグができます。
(マニュアルにはごちゃごちゃ書いていましたが, 必要なことだけ書きます)


1.  PHP の XDebug の設定をする(php.ini の編集)


これは PHP の設定です。

XAMPP であれば, C:\xampp\php\php.ini   です。 PHPの設定ファイルである, php.ini を探します。

ここでは, XDebug に関する, いくつかの項目のコメントアウトをはずします。 そして一部書き換えます。

[XDebug]

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000




この5行分です。  連続にはなっていないので, うまいこと探してください。大半は, コメントアウトをはずすだけでいけます。

xdebug.remote_enable だけ, 0 か off かになっていますので, 1に変えましょう。(onでもO.K.です)

xdebug のモジュール(dll) はXAMPPに標準装備です。

リモートデバッガーを設定するわけですね。

確認をしましょう。



<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
            echo "Hello World! This is my first PHP project!";
            phpinfo();
        ?>
    </body>
</html>



このスクリプトを実行してみましょう。(前回のプロジェクトの続きを見てください)

phpinfo();   で PHPの設定情報を閲覧します。


上記のような画面がでてきます。 この中に, XDebug に関する情報があれば, 設定がうまくいっている証拠です。

2.  NetBeans の実行設定をする


次は, NetBeans 側の設定です。

NetBeans のメニュー "ツール" -> "オプション" を開きます。

この中に PHP というオプションがあります。



この中の デバッグというタブを選択します。 ここに, デバッグ設定が書かれています。

デバッガのポートが設定してあれば O.K. です。 (9000 )

では, 早速 Debug してみましょう。 その前に, Apache は再起動してください。


ソースコードの右のほうで, クリックして, デバッグポイントをはります。

そして実行してみましょう。 この部分で止められるはずです。


設定と確認は以上です。

次回は, 勉強中の Cake PHP です。













NetBeans で PHP(インストール編)

こんにちは, Windows Phone のネタを書いていくつもりが, ちょっと次に作りたいアプリのために, PHPをやっています。  普段は, Eclipse で Java を書いていますが,  Eclipse をこれ以上重くしたくないので, 思い切って, Net Beans で PHP をやろうと思い立って, 環境を構築して見ました。

今回の環境

OS        :    Windows 7  64bit
XAMPP  :    1.7
NetBeans IDE : 7.1.2

※ XAMPPのインストールは取り上げません。

ます, NetBeans IDEを ダウンロードします (NetBeansのサイト)



ダウンロードしようとすると,  バンドルによる選択肢があるようです。 今回は PHPしか使わないので, PHPを選択します。

ダウンロード, インストールを行います。(特に迷ったところはなかったように思います)


NetBeans IDEを開いたときのページがこれです。

早速, PHP プログラミングを始めましょう。


"ファイル" -> "新規プロジェクト" -> "PHPアプリケーション" を選びます。
(既存のソースを使うときは, 既存のソースを使用するPHPアプリケーションを使用します, Cake PHPを選択したりする場合)





プロジェクト名を入れるところになります。 PHPのバージョンや, エンコーディングなどの設定があります。   ソースフォルダを見ると, XAMPP の htdocs になっています。これで, XAMPP のApache  をスタートさせれば, このPHP プロジェクト内の PHPスクリプトは動くようになるわけですね。






次は, 実行環境(サーバ) の設定です。

今回は開発環境なので, ローカルで十分です。  プロジェクトのURL は http://localhost/プロジェクト名

になっています。 これで実行すると, デフォルトのWeb ブラウザがこのURLを開いてくれます。





フレームワークの設定です。 Symfony と Zend が使えるみたいです。 今回は使わないので, 次へ行きましょう。


index.php が表示されます。 早速何か書いてみましょう。<?php ?> の中に

<?php
    echo "Hello World!"
?>


と書いて, 上のほうにある, 緑色の右→を クリックすると, 実行開始です。
デフォルトで設定してあるブラウザが開きます。

※XAMPP のApacheをスタートさせて起きましょう。 ちょっくら調べてみましたが, NetBeans IDEから, XAMPP Apache を触ることはとりあえず無理な気がします。

これで 環境の構築は, 終了です。 次回は, デバッガを入れて, NetBeans上でデバッグしましょう。
(デバッグの設定はこちら)




























2012年3月14日水曜日

WordPress + XAMPP

こんにちは, Android のソフトウェア開発にはまっていて, しばらく更新できませんでしたが, 別のブログをつくる必要がでまして, WordPress を導入しようとしています。
今回は, レンタルサーバを使う前に, local で WordPress 環境を構築し, 学習していく準備をしました。

環境
Windows 7 64bit
XAMPP 1.7.7(PHP5.3.8)
WordPress3.3.1(ja)

手順は以下のとおりです。必ずしもこうではないのですが, わかりやすくいきましょう。

手順
1. XAMPP のインストール
2. MySQLの開始
3. WordPressのダウンロードと解凍
4. MySQLにWordPress用のDBをつくる
5. WordPress設定ファイル(wp-config.php) の編集
6.  Apache の開始
7. WordPressのインストール
8. 動作確認


1. XAMPP のインストール

WordPress を動かすには, Webサーバ, MySQL, PHP が必要です。これらの環境を一気にそろえられる 環境, XAMPP を利用します。

http://www.apachefriends.org/jp/xampp-windows.html  よりWindows用のインストーラーを取得します。

特にインストールでひっかかるところはないのですが, Windows7 の Ultimate とかを使っている人は, IISが標準装備なので注意です。

XAMPPが動かない を参考に。

ここでは C:\xampp にインストール

2. MySQLの開始 


筆者の環境はこんな感じにしています。 Apache はここで開始してもいいです。 とりあえず MySQLが Stop になっている場合は, Start をクリックします。  Svc というのは, サービスで動作している場合です。

3. WordPressのダウンロードと解凍

WordPress をダウンロードしましょう。  WordPress より, 日本語版を wordpress-x.x.x-ja.zip となっているので, 解凍して適当な場所においておきましょう。


4. MySQLにWordPress用のDBをつくる 


WordPress では, DBにMySQL を利用します。

先ほど, XAMPP のインストール時に MySQL はインストールされたので, コマンドを使って, DBを作成しましょう。

作成するデータベース名  wordpress

・コマンドプロンプトを開きMySQLへ接続します。

C:\User\atmarkplant>mysql -uXXXX -pYYYY

XXXX : ユーザ名
YYYY :  パスワード

・wordpress 用のデータベース
mysql>create database wordpress;


※データベースの名前はなんでもよいのです。 abc とかでも, WordPressの設定ファイルさえきちんと変えればなんでもよいのです。


※削除したり, 再インストールしたい場合は, データベースを削除します
drop database wordpress;

5. WordPress設定ファイル(wp-config.php) の編集 

これを行う前に, 適当な場所に解凍した wordpress のフォルダをXAMPPのroot ディレクトリ(動作するところ)に入れましょう。

c:\xampp\htdocs

xampp以下  htdocs というフォルダの中にwordpress をフォルダごと入れましょう。

htdocs は, XAMPP の Apache でWebサイトを動作させるときの, トップ(root) になります
中を開けると, xampp フォルダ, apache_pb.gif とか http://localhost:80  でアクセスしたときの
トップページなどが入っています。

htdocs 以下に配置したのち, wordpress フォルダの wp-config-sample.php をコピーして,  wp-config.php と名前を変えます。

このwp-config.php が設定ファイルです。これを編集して設定を行います。

23行目あたりに


/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name_here');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'username_here');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');


とありますので, これらを環境に合わせて変えます。

先ほどのデータベース名  wordpress,  ユーザ名などを変更します。ローカルで動かすので ホスト名の変更は必要ありません。

ex) データベース名を wordpress, ユーザ名を root にしてみました。
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');

これを保存したら, 設定ファイルは完了です。


6.  Apache の開始 

ここで, XAMPP に戻って, Apache を起動します。すでにStartしている方は, 一度Stopでとめましょう。先ほどの設定ファイルが読み込まれます。

7. WordPressのインストール 

Start したら, Chrome などのWebブラウザで以下を開きます。

http://localhost/wordpress


失敗したら, こんな感じです。 wp-config.php がミスっているか, MySQLに問題があります。





成功したら, こんな感じです。

サイトの名前, ユーザ名, パスワード,メールアドレスを入れます。 ユーザ名, パスワードは後に
管理で利用します。


WordPressをインストールを押すと, インストールが開始されます。DBにTableなどを作成しています。 終わるとすぐに上の画面が表示されインストール終了です。

8. 動作確認 

WordPress の動作確認です。

http://localhost/wordpress にアクセスしてみましょう。


Twentyeleven のTheme が表示されます。 こんな感じに表示されれば成功です。


















2011年5月10日火曜日

Fedora14でApache Webサーバー(PHP設定)

前回の Apache Web サーバーの設定に続きまして, PHP モジュールの追加を行います
(LPICさんの Linuxサーバ構築標準教科書を参考にさせていただきました)

環境は前回に続き, VMWare 上のFedora14です。
(Apacheの設定がお済みでない場合は, edora14でApache Webサーバー(初期設定編)
をご覧ください。

手順は, 以下のとおりです。
1.  PHPのインストール
2. Apache の再起動
3. PHPファイルの準備とアクセステスト

※PHPのインストールで, Apahce側の設定も勝手に
変更されるので, Apache のインストールを先に行います

これだけです。
1.  PHP のインストール(必要最小限)
(•パッケージの有無の確認)
rpm php php-cli php-common php

•Add/Remove Software(GUI) から以下のソフトウェアをインストールします
以下の3つです

- PHP scripting language for creating dynamic web sites
php-5.3.6-1.fc14(i686)

- Command-line interface for PHP
php-cli-5.3.6-fc.14

- Common Files for PHP
php-common-5.3.6-fc.14(i686)


•インストールのチェック
コンソールを開いて,
php -v  とうってみましょう。
PHPのバージョンが表示されるはずです。
これで, PHPの設定は終了です

•設定ファイルの確認

PHP5をインストールすると, /etc/httpd/conf.d/php.conf
が用意される(これがPHPに関する設定ファイル)


ついでに, /etc/httpd/conf/httpd.conf に関係する設定があるか確認しましょう。

cat -n /etc/httpd/conf/httpd.conf | grep php5_module
cat -n /etc/httpd/conf/httpd.conf | grep /conf.d/*

LoadModule php5_module module/libphp5.so
と
Include /etc/httd/conf/httpd.conf/*
があればO.Kです。

2. Apacheの再起動
/etc/init.d/httpd restart

3.  PHP ファイルの準備
test.php
<?php
    print('Hello World!')
?>

これを /var/www/htmlにいれます。

http://hostname/test.php でアクセスすると

でてきました。
以上で終了です。

2011年5月4日水曜日

PHPクラスメモ

●PHPでクラスをつくるメモ

はっきり言ってしまうと, Java の書き方に非常によく似ている。

- 定義
class class_name
{
}

- アクセス
private, protected, public

- this
$this

- クローン(値コピーの生成)
clone  インスタンス名

- 親クラスへのアクセス      これだけ大きく違うかも
parent::

-抽象クラス
abstract

-  インタフェース
interface

といったように, Java とよく似た部分が多い。
本では, サンプルなどを動作させる方法や, ファイルの分け方などないので
メモしておく。

----------------------------------------------------------
サンプル
ファイル名   AKB48.php      親クラス
                    No3b.php        サブクラス
                    classTest.php   テスト用

・動作方法
これらのサンプルを同一フォルダ(ディレクトリ内に入れ)
コンソール(Windows ならコマンドプロンプトで)
おそらくXAMPPインストール時に, PHPエンジンのパスはとおっているはず,
気になるようでしたら,
php -v  を実行してみてください。(バージョン情報の表示)


php classTest.php

でO.K.

・動作確認
Window 7  64bit   PHPはXAMPPでインストールしたもの

----------------------------------------------------------

AKB.php
<?php
     class AKB
    {
         private $name;
         private $team;
         
         const MEMBER = 48;               // 定数定義
         
          public static $akb = "AKB48";       //  static 変数

         public function __construct( $name )    // コンストラクタ
         { 
                $this->name = $name; 
          }

         public function work()  
         { 
                 print "AKBがやってきた\n"; 
          }
          
          public function getName()               // getter
         { 
                  print($this->name . "\n");
          }
         
          public function setName( $name )     // setter
         {   
              $this->name = $name; 
          }
          
          public function getGroup()    // static 変数の参照
          { 
                return self::$akb; 
           }
           
           public static function greet() 
          { 
                print ("こんにちは!\n");  
           }
     }
?>

No3b.php
<?php
    class No3b extends AKB
    {
               private $song;

               public function __construct($name, $song)    // コンストラクタ
              { 
                    parent::__construct($name);               // 親クラスのコンストラクタ呼び出し
                    $this->song = $song;  
               }
                
               public function work()                    // Override
               { 
                     print "No3bがやってきた\n"; 
               }
                
               public function printSong()  
              { 
                     print ($this->song . "\n"); 
              }
       }
?>

classTest.php

<?php
    require 'AKB.php';                 //  AKBクラスを呼ぶ
    require 'No3b.php';                //  No3bクラスを呼ぶ
     
    $mayuyu = new AKB("まゆゆ");
    $mayuyu2 = clone $mayuyu;                 //  クローンを作った
    $mayuyu2->setName("渡辺麻友");     //   クローンを変更
    $mayuyu->getName();
    $mayuyu2->getName();
    $mayuyu->work();
     $nyaro = new No3b("こじはる", "ハート型ウイルス");     //  サブクラスをつくる
     $nyaro->printSong();
    $nyaro->work();                      //  サブクラスでoverrideした関数の呼び出し
     AKB::greet();                          //  static 関数の呼び出し
?>
実行結果
まゆゆ
渡辺麻友
AKBがやってきた
ハート型ウイルス
No3bがやってきた
こんにちは!

2011年4月17日日曜日

XAMPP Eclipse PDT XDebug の設定

Eclipse に PDTをインストール, これで, PHPのプロジェクトはつくれますが,
デバッグができません。

そこでXAMPPに標準で組み込んである, XDebug を有効にすることでデバッグを可能にします
今回対象とするのは, PHP のWeb Page のデバッグです。

・検証環境

Windows 7  64bit 
Eclipse 3.6
XAMPP 1.7.4



●方法
1.  xampp の php.ini    C:\xampp\php\php.ini を以下のように編集
・  一番最後の方にある XDebug に関する項目を編集
[XDebug] とファイル内に書いているはずなので, 検索してみてください(私の環境では1975行目でした)
・  その下にある
zend_extension = "C:\xampp\php\php_xdebug.dll"
という記述のコメントアウトを外す  ;  を消去

・ さらに下の方にある
xdebug.remote_enable=1     (0の場合は1に変える)
xdebug.remote_host="localhost"
をそれぞれコメントアウトをはずす(;を消去する)

これで php.ini の設定は終了です

2. Eclipse のデバッグ設定
[実行(Run)] → [デバッグ設定[Debug Configuration]
でデバッグ設定画面へ移動

・デバッグ設定の中で, PHP Web Page を探します。
右クリック → 新規作成(New) で PHP Web Page デバッグを新しくつくります。
上の写真のようなセッティングをします。

・サーバデバッグ(Server Debugger)  を  XDebug に変更

・ファイル(File)  をデバッグしたい, PHPファイルにします。例では プロジェクト以下にある
array.php

・このファイルのコピーをXAMPPの実行環境に入れます
htdocs の下など C:\xampp\htdocs\array.php

・URL をXAMPPで実際に見るためのURLに変更します。
デフォルトでは,
自動生成?(Auto Generate)にチェックが入っていますが, それをはずして
右側のボックスのプロジェクト名/ファイル名になっているところを
プロジェクト名を消してしまいます。

以上で準備完了です。Debug を押して実行してみましょう。


すると, デバッグビューに代わり, Internal Web Browser で
実行した結果が表示されます。(完全に文字化けしてますね)

Internal Web Browser でIEを使用していて, UTF-8 で文字化けしています。



注意
Zend デバッガーが有効になっていると使えません。
英語環境を使っているので, Eclipse の日本語の設定画面のことをよく知りません
ごめんなさい。


問題点
HTMLのプレビューとして, IEが起動するのですが, UTF-8 が使えません。
どうやって直すんだろう。

2011年2月12日土曜日

XAMPP ~ Apacheが動かない(Windows7)

XAMPPをインストール。 MySQLとApacheがインストールされますが,
Apache Web Server が動かないケースが多い。
実際, インストールしてみると, 同じケースに引っかかっている方も多い。
自分もかなり引っかかったので, レポートします。

環境 Window7 64bit 版

1. IIS
Windows7 では, Windows Component として, IISがport80で動いています。
これで Apache Web Server と競合するので, port 変更か IISを削除します。

"Control Panel" → "Windows Feature Turn on or off "
ここで, Internet Information Services, Internet Information Services Hostable Web Core
のチェックをはずします

2. Skype
どうやら, デフォルトで, Port 80 を使っているみたいなので, 削除か, Port 変更ですね。

3. Subversion ( Visual Subversion )
驚いたことに, XAMPP の Apache Web Server
デフォルトでは, Port 80 でしか動作していないにもかかわらず,
SSL セッティングしていた Visual Subversion(port 443 ) に反応して, 動作しないことがわかりました。

どうやら, Apache Web Server は, 443 の port に関してもCheck しているみたいです。
一時的に, Subversionを停止して Apache Web Server を起動すると, 正常動作しました。


ポートに関しては, 以下のコマンド
netstat -aof

で, 使用しているport と, PIDが出るので, taskmgrでチェック。

80, 443 に関して要チェックです。