我的代码是这样的:
<?php
class A {
public function CallA()
{
echo "callA" . PHP_EOL;
}
public static function CallB()
{
echo "callB" . PHP_EOL;
}
public static function __callStatic($method, $args)
{
echo "callStatic {$method}
我最近读到了关于在PHP中调用作用域和作用域解析运算符(::)的内容。有两种变体:实例调用和静态调用。考虑下面的listeng:
<?php
class A {
public function __call($method, $parameters) {
echo "I'm the __call() magic method".PHP_EOL;
}
public static function __callStatic($method, $parameters) {
echo "I'm t
关于PHP中__callStatic()的快速提问;
class Test{
public static function __callStatic($method, $arguments){
echo $method . PHP_EOL;
}
public function __call($method, $arguments){
echo $method . PHP_EOL;
}
}
$test = new Test();
$test->foo();
$test->{'hello-world'}
当我尝试这个:
<?php
class myParent {
public function __call($method, $params) {
echo "from __call";
}
public function __callStatic($method, $params) {
echo "from __callStatic";
}
}
class mySon extends myParent {
public function bar() {
myPar
我试着在上面引用这个,但还是不明白。
<?php
class A {
public function __call($method, $parameters) {
echo "I'm the __call() magic method".PHP_EOL;
}
public static function __callStatic($method, $parameters) {
echo "I'm the __callStatic() magic method".PHP_EOL;
我正在寻找一个将参数传递给动态常量名称的解决方案。
<?php
class L {
const profile_tag_1 = 'Bla bla Age from %s to %s';
const profile_tag_2 = 'Wow Wow Age from %s to %s';
public static function __callStatic($string, $args) {
return vsprintf(constant("self::" . $string), $args);
我在PHP类中发现了这种奇怪的行为(v5.3.8)。
你有:
class foo {
function __call($func, $args) {
if ($func == 'bar')
echo "non-static __call";
}
static function __callStatic($func, $args) {
if ($func == 'bar')
echo "__callStatic";
}
function callMe() {
s
大家好,大家好,
上周,我们在PHP中偶然发现了一种意想不到的行为。对于我们的框架,我们使用基类中的__call 和 __callStatic魔术函数来提供与这个线程无关的某种功能。当我们使用__callStatic函数对同一个类进行适当的静态调用时,在对象范围内定义魔术函数,出于某种原因,将调用__call方法。
下面是一个最低限度的工作示例:
/** tests calls on class B */
class B {
/** catch object calls on B */
public function __call($name, $arguments) {
使用PHP的神奇函数__callStatic与正常定义静态函数是否有性能差异。
示例:
class Welcome{
public static function __callStatic($method, $parameters){
switch ($method) {
case 'functionName1':
// codes for functionName1 goes here
break;
case 'functionName2':
// codes for functionName
我在PHP5.3上有个问题。我需要使用__callStatic调用一个方法,但是如果我在实例化对象中使用它,PHP会调用__call。
以上是现实生活中的一个例子:
<?php
class A {
function __call($method, $args){
// Note: $this is defined!
echo "Ops! Don't works. {$this->c}";
}
static function __callStatic($
我试图从它的子类的成员中调用一个静态魔术函数(__callStatic)。问题是,它转到了非静态__call。
<?php
ini_set("display_errors", true);
class a
{
function __call($method, $params)
{
echo "instance";
}
static function __callStatic($method, $params)
{
echo "static";
}
}
c
我刚刚升级到PHP5.5.3,我注意到Underscore.php抛出了一个奇怪的错误:
Non-static method __::invoke() should not be called statically
引起此错误的代码如下所示:
$params = \__::invoke( $params, function( $value ) {
...
} );
通过Underscore.php源代码,我不明白为什么会抛出这个错误,因为对invoke的调用应该由__callStatic处理程序处理:
public static function __callStatic($name,
下面的代码在我安装PHP 5.3.6-13ubuntu3.2时失败,这让我想知道为什么我不能在这个方法中访问$_SERVER超级全局。
<?php
header('Content-Type: text/plain');
$method = '_SERVER';
var_dump($$method); // Works fine
class i
{
public static function __callStatic($method, $args)
{
$method = '_SERVER';
我的PHP以常量的形式包含可翻译的值。通过使用常量的名称调用类,应该返回格式化的值。
class Test {
const translation_value = 'Foo %s, bar %s';
public static function __callStatic($string, $args) {
return vsprintf(constant("self::" . $string), $args);
}
}
如果我通过Test::{"translation_value"}(["test&
我有一个定义了魔术方法__call和_callStatic的基类,这样就可以处理对未声明成员函数的调用。
当您同时拥有非静态运算符和静态运算符时,从派生类调用静态运算符似乎是不可能的,因为如果与parent或基类的名称一起使用,静态运算符::并不隐含地表示static。这是这里解释的一种特殊语法:
我想在这里做的是调用__callStatic的派生类,它失败了,因为调用默认为是一个非静态调用,并且由__call处理。
如何在基类的成员函数上进行显式静态调用?
<?php
class MyBaseClass {
public static function __callStat
我一直在阅读,在其他地方,但我似乎找不到任何结论。
是否有任何方法有效地通过此调用堆栈传递引用,从而产生所需的功能,如下面的示例所述?虽然这个例子并没有试图解决这个问题,但它确实说明了这个问题:
class TestClass{
// surely __call would result similarly
public static function __callStatic($function, $arguments){
return call_user_func_array($function, $arguments);
}
}
// note
所以,
我对PHP类方法调用的概念有问题。让我们有一个实现简单西格玛操作的类,例如,一个sum:
class Sigma
{
protected $_fValue = null;
public function __construct($fValue)
{
$this->_fValue = (double)$fValue;
}
public static function __callStatic($sName, $rgArgs)
{
if(count($rgArgs)!=count(array_filter($rgArgs
我有一个关于一个奇怪行为的问题。
看看这段代码:
class User
{
public function can($name) {
return call_user_func(array($name, 'test'));
}
public static function __callStatic($name, $args) {
return 'User::__callStatic';
}
public function __call($name, $args) {
re
class me {
private $name;
public function __construct($name) { $this->name = $name; }
public function work() {
return "You are working as ". $this->name;
}
public static function work() {
return "You are working anonymously";
}
}
$new = new me
我试图在vb.net中创建一个动态对象,使用PHPas很简单--它为getter、setter和调用方法提供了神奇的方法,但我需要在vb.net中这样做
在PHP中:
<?php
class foo {
private $vars = array()
public function __construct() {}
public function __get($name) {
if (in_array($name, $this->vars)) {
return $th
如果文件夹还不存在,我尝试使用以下方法创建一个带有它的子目录的文件夹:
public function createFolderIfNotExist($path){
//Check if the folder already exists
if(!File::Exists($path)){
//make folder with $path generate recursive with right 0775
File::makeDirectory($path, 0775 , true);
}
}
在本地运行时,它工作正常(xampp),当
我有这两个类:
class Service {
public static function __callStatic($name, $arguments)
{
// ... opt-out code
$result = call_user_func_array([CacheService::class, $name], $arguments);
// ... opt-out code
}
}
还有这个
class CacheService
{
public static function __callStatic
如果我正在用PHP设计一个框架,并且在我的框架中有一个A类和一个AManager类。
我怎样才能让所有的A对象方法或类方法只能在AManager方法中调用?
例如:
class A {
public function __construct() {
if( the calling environment is not within AManager Object Method )
throw new Exception("error")
else
init..
}
}
我尝试使用A类的__callStatic和debug_back
我强烈怀疑我的整体代码设计是错误的,但是可以继承静态值吗?
我有一个基类BaseModel,在其中我有一个__callStatic调用。BaseModel扩展到不同的模型类型中,在每个模型类型中,我都有一个带有字符串值的public static $type;来表示该类型。当我在BaseModel中的callStatic调用中调用self::$type时,我返回了null,这在事后是有意义的。但是,我不确定如何才能在不将callStatic代码复制到每个类中的情况下获得进行调用的类的类型(不确定是否可以将魔法方法放入特征中?)。
现在,我不会做任何花哨的事情:
public static fu
我得到了关于facade的错误,尽管我遵循了laravel升级指南。
PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in D:\Git_Undiksha\legalisir-ijasah-online\vendor\laravel\framework\src\Illuminate\Support\Faca
des\Facade.php:258
Stack trace:
#0 D:\Git_Undiksha\legalisir-ijasah-online\app\Exceptions\Ha
我正在尝试使用__callStatic来包装对类中不同静态函数的调用。
此代码的当前版本允许我使用具有0或1参数的函数执行此操作:
class test {
public static function __callStatic($name, $args) {
if (method_exists(__CLASS__, $name)) {
echo "it does exist\n";
return forward_static_call([__CLASS__, $name], $args[0]);
} else {
ec
我想使用__callStatic作为调用静态方法的preProcessor。我的想法是让方法成为私有的,这样每个静态调用都会被转发到__callStatic。然后我可以用它来做一些事情,然后调用这个方法。但这似乎是不可能的。下面是一个示例:
class A {
public static function __callStatic($name, $params) {
var_dump($name);
// TODO call the private function from class B here
//call_user_fun
我想我可能已经发现了代码的一个奇怪之处,它允许对Laravel雄辩的模型方法进行静态调用,但需要一些帮助。
我有一个名为FormSubmission的模型,它扩展了Eloquent\Model。
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
class FormSubmission extends Model
{
/**
* Should always return a Collection of FormSubmissions
扩展雄辩的模型似乎是人们正在做的。我有一个有趣的问题:
FooBase.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class FooBase extends Model {
protected $table = 'foo_bar';
}
FooExtends.php
namespace App\Models;
class FooExtends extends FooBase {
public function method() {
retur
这个让我对如何结合使用语言构造和PHP的神奇方法感到好奇。我创建了一个演示代码:
<?php
class Testing {
public function scopeList() {
echo "scopeList";
}
public function __call($method, $parameters) {
if($method == "list") {
$this->scopeList();
}
}
public stat