2016-04-28 27 views
0

私は、このフォルダ構造を持っている:GETメソッドとしてスクリプトに引数を渡すにはどうすればよいですか?

\out 
    \MakeAvatar.php 
\root 
    \include 
     \Calculator.php 
    \img 
     \avatar 

MakeAvatar.php何?これはパラメータ(idのような)を取得し、そのパラメータに基づいてアバターを作成するスクリプトです。今度は、Calculator.phpからMakeAvatar.phpに引数($id)を渡す必要があります。どうやってやるの?

は、ここに私のコードです:

$_GET['id'] = $id; // passing 
file_put_contents("../img/avatar/".$id.".jpg", file_get_contents("../out/MakeAvatar.php")); 

しかし、それは動作しません。私は結果が未知の画像であることを意味する(不明)

enter image description here

Iエディタによってその画像を開くと、それはMakeAvatar.php(そのすべてのコード)の含有量を含有します。したがって、問題はになります。


注1:私はルートにMakeAvatar.phpを入れてから、この作品の場合のように、その引数を渡す場合:

... file_get_contents("http://example.com/MakeAvatar.php?id=$id") 

しかし、あなたはMakeAatar.phpがルートから外れていると私はhttpを使用することはできません見るように。だから私はhttpなしで引数を渡すことができますか?

+0

root以外であれば、 'file_get_contents'を'/out/MakeAvatar.php'のような完全なシステムディレクトリパスで試してみることができます –

+0

同じ質問のバリエーションを求めてください。それは常に同じ答えです。 – Barmar

+0

@Barmar私の質問は重複しています。はい、彼らは同じ概念を持っていますが、この質問で私は本当に回避策が必要です。 – stack

答えて

0

あなたfile_get_contentsは実際それをを実行ファイルの内容ではなく、を読んであります。

あなたはCalculator.phpからincludeにファイルを持っているか、ローカルのHTTPリクエストをHTTPサーバに公開して行うのどちらかよ(例。のようなfile_get_contents('http://localhost/path/to/your/MakeAvatar.php'))私はMakeAvatarファイルにあなたの大切なロジックを包むお勧めします

その関数を実行して、includeを実行してこの関数を実行します。

0

パブリックWebサーバーのディレクトリがrootの場合は、エントリポイントを作成する必要があります。 root/avatar.phpコントローラとしましょう。コントローラでは、アバターを生成するメソッドを持つクラス(モデルと呼ぶ)を使用する必要があります。

このように、あなたの構造は次のようになります。アウト/ MakeAvatar

<?php 
require_once __DIR__ . '/../out/MakeAvatar.php'; 
MakeAvatar::printPng($_GET); 

avatar.php

ルートを/。PHP

<?php 
class MakeAvatar { 
    public static function printPng(array $input) { 
    $id = $input['id']; 
    echo '... PNG data for $id here...'; 
    } 
} 

また、私はclassesまたはlibのようなディレクトリにモデルを保つだろう。コントローラ - public/somethingにあり、templatesなどの異なるディレクトリにあるビュー。