2017-01-30 8 views
0

私はこの質問が何百回も異なる方法で尋ねられることを知っています。しかし、私はこの特定のものを働かせることはできません。私は本当に混乱しています。別の "public static function"で "public static function"の変数を使用

これが私のスクリプトの冒頭で:

<?php 

class API { 

    protected static $message, $data, $status, $session, $token, $dbo, $app; 

    const FAIL = 0; 
    const SUCCESS = 1; 
    const INCOMPLETE_ARGS = 2; 
    const GROUP_ALLOW = array(5); 

    public static function Init() { 
     global $app; 
     self::$status = false; 
     self::$message = "Invalid request."; 
     self::$data = ""; 
    } 

    public static function Render() { 
     echo preg_replace("/\\\\u([0-9abcdef]{4})/", "&#x$1;", json_encode(array(
      "status" => self::$status, 
      "message" => self::$message, 
      "data" => self::$data)) 
     ); 
    } 

は、この機能があります:

 public static function Login() { 
     $email = (isset($_REQUEST['email'])) ? $_REQUEST['email'] : ""; 
       $password = (isset($_REQUEST['password'])) ? $_REQUEST['password'] : ""; 

       require_once ("../app/Mage.php"); 
       umask(0); 
       ob_start(); 
       session_start(); 
       Mage::app('default'); 
       Mage::getSingleton("core/session", array("name" => "frontend")); 
       $b2bwebsiteid = Mage::getStoreConfig('base/general/b2bwebsite'); 
       //$websiteId   = Mage::app()->getWebsite()->getId(); 
       //$store    = Mage::app()->getStore(); 

       $customer = Mage::getModel("customer/customer"); 
       $customer->website_id = $b2bwebsiteid; 
       $customer->loadByEmail($email); 
       $countryCodeBE = $customer->getDefaultBillingAddress()->getCountry(); 
       $countrybe = Mage::getModel('directory/country')->loadByCode($countryCodeBE); 
       $countryid = $countrybe->getCountryId(); 
    ..... 
    ..... 

との間に多くのコードや機能があります。

さてビットさらに、別の機能があります:

public static function ProductInfoNew() { 

そして今、私がしたい事は、私はそのようにProductInfoNew機能でその最初の関数から変数$ countryidをロードすることです

if ($countryid == "BE") { 
       $groupid = 6; 
      } 
      else { 
       $groupid = 4; 
      } 

出力は常にNULLまたは空であるようです。

$ countryid変数をグローバル変数、静的変数として設定しようとしましたが、self ::で変数をロードしようとしましたが、私は非常に多くのことを試みましたが、動作させることはできません。

これを実行する正しい解決方法を知っている人はいますか? ありがとうございます。

+0

あなたの質問には、「そこにはこの機能があります」という部分があり、その下にコードがたくさんあります。機能はどこですか?私はちょうどコードの束を参照してください。 – aguertin

+0

ああ、申し訳ありません。それは今あります –

+0

関数にパラメータとして変数を渡すか、APIクラス内で静的にします。正しい構文を使用することを忘れないでください。 'class_name :: $ var_name'と似ているはずです。 – Lemjur

答えて

1

は、使用しているクラスの内側のフィールドにする必要があります。

class API { 

    private static $country_id; 

    public static function ProductInfoNew() { 
     if (self::$country_id == "BE") { 
      $groupid = 6; 
     } else { 
      $groupid = 4; 
     } 
    } 
} 
+0

$ country_idまたは$ countryidのままであれば、まだNULLが出力されていますか?両方とも試してみましたが、成功しません。 –

+0

@ErjenRijnders var_dump($ country_id)を実行し、それが何を伝えているか教えてください。また、値を参照する前に、ある時点で設定していることを確認してください。 – aguertin

関連する問題