Я хотел бы иметь следующее:
<?php
class Context
{
public static $ClientID = "";
public static $ClientSecret = "";
public static function RedirectURI()
{
return "http://" . $_SERVER[ "HTTP_HOST" ] ."/authenticate";
}
}
стать чем-то вроде этого:
<?php
class Context
{
public static $ClientID = "";
public static $ClientSecret = "";
public static $RedirectURI;
protected function getRedirectURI()
{
return "http://" . $_SERVER[ "HTTP_HOST" ] ."/authenticate";
}
}
это будет означать, что API станет более интуитивным и понятным, когда люди захотят получить доступ к свойству RedirectURI:
echo Context::$ClientID;
echo Context::$RedirectURI;
Есть ли способ сделать это в PHP, как вы можете в C #:
public class Context
{
public static string ClientID { get; set; }
public static string ClientSecret = "";
public static string RedirectURI {
get
{
return "http://" . $_SERVER[ "HTTP_HOST" ] ."/authenticate";
};
set{}
}
}
Я знаю о __Get (), но кажется, что вы не можете иметь явно определенную модель, потому что свойство не должно быть установлено, чтобы воздействовать на него?
<?php
class Context
{
public static $ClientID = "";
public static $ClientSecret = "";
public static function __Get( $field )
{
switch( $field )
{
case "RedirectURI":
return "http://" . $_SERVER[ "HTTP_HOST" ] ."/authenticate";
break;
default:
throw new Exception( "Property {field} not defined" );
}
}
}
Просто чтобы облегчить жизнь, $_SERVER[ "" ]
не может быть использован в декларации собственности … таким образом, проблема.
Я мог бы создать глобальную переменную и ссылаться на нее из свойства, но мне просто не нравится такой подход.
Задача ещё не решена.
Других решений пока нет …