java和PHP之间使用静态的区别?

java和PHP之间使用静态的区别?,java,php,static,Java,Php,Static,在Java中,我读到,静态函数只能访问静态函数或静态变量。我试图找出在PHP和java中使用静态的区别 在PHP中是否也存在同样的问题 我们可以在PHP中的静态函数中调用非静态函数 在PHP中,我们可以在静态函数中调用非静态函数吗 是但未通知。作为$this关键字在静态上下文下不可用。但是,您可以使用static/self关键字执行此操作,但这将导致严格的标准通知 严格标准:不应调用非静态方法A::foo() 静态地 所以最好不要这样做 我想是一样的 顺便说一句,编辑静态函数(没有正确读取…)

Java
中,我读到,
静态函数
只能访问
静态函数
静态变量
。我试图找出在PHP和java中使用静态的区别

  • PHP
    中是否也存在同样的问题
  • 我们可以在
    PHP
    中的
    静态函数
    中调用
    非静态函数
  • 在PHP中,我们可以在静态函数中调用非静态函数吗

    是但未通知。作为
    $this
    关键字在静态上下文下不可用。但是,您可以使用
    static
    /
    self
    关键字执行此操作,但这将导致严格的标准通知

    严格标准:不应调用非静态方法A::foo() 静态地

    所以最好不要这样做

  • 我想是一样的
  • 顺便说一句,编辑静态函数(没有正确读取…)

    对于Java,当JVM正在运行或使用某些技术卸载类时,静态变量将贯穿整个生命周期。这意味着,一旦使用静态变量,它将存在于内存中

    PHP没有任何内存。因此,这些变量,甚至被声明为“静态”或“全局”的,都将被销毁

    对于2。对如果很少需要类的实例,可以让静态方法创建实例,调用非静态方法并返回值

    class Scope {
        public function mynonstatic() {
        }
    
        public static function mystatic() {
            $s = new Scope();
            return $s->mynonstatic();
        } }
    
    记住,静态方法实际上只是一个范围缩小的全局函数。它们是有用的,但如果没有充分的理由,就不应该创建它们

    这里的来源:

    第一个静态是一个关键字。 它在声明变量或函数名之前使用

    Java中的静态变量是什么? Java中的静态变量是属于类的变量,在执行开始时只初始化一次。它是属于类而不是对象(实例)的变量。静态变量只在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量

    *类的所有实例共享的单个副本 *静态变量可以通过类名直接访问,不需要任何对象

        public class Demo{
       public static void main(String args[]){
         Student s1 = new Student();
         s1.showData();
         Student s2 = new Student();
         s2.showData();
         //Student.b++;
         //s1.showData();
      }
    }
    
    class Student {
    int a; //initialized to zero
    static int b; //initialized to zero only when class is loaded not for each object created.
    
      Student(){
       //Constructor incrementing static variable b
       b++;
      }
    
       public void showData(){
          System.out.println("Value of a = "+a);
          System.out.println("Value of b = "+b);
       }
    //public static void increment(){
    //a++;
    //}
    
    }
    
    静态变量 PHP的一个特性是在变量完成执行并释放内存后删除该变量。有时,即使在函数执行完成之后,我们也需要存储一个变量。因此,变量作用域的另一个重要特征是静态变量。我们在变量之前使用static关键字来定义一个变量,这个变量称为static variable

    静态变量仅存在于局部函数中,但在程序执行离开作用域后,它不会释放内存。通过一个例子来理解它:

       <?php  
        function static_var()  
        {  
            static $num1 = 3;       //static variable  
            $num2 = 6;          //Non-static variable  
            //increment in non-static variable  
            $num1++;  
            //increment in static variable  
            $num2++;  
            echo "Static: " .$num1 ."</br>";  
            echo "Non-static: " .$num2 ."</br>";  
        }  
          
    //first function call  
        static_var();  
      
        //second function call  
        static_var();  
    ?>  
    //Output:
    
    Static: 4
    Non-static: 7
    Static: 5
    Non-static: 7
    
    
    //输出:
    静态:4
    非静态:7
    静态:5
    非静态:7
    
    类A{public function foo(){print(
    foo A”);}公共静态函数条(){static::foo();}}
    以上是否有效?是的,我也发现与您相同。因此,在PHP和Java中使用static是不一样的。您将得到一个警告,您不应该这样做。您可以看到演示。在PHP中,您将收到警告,它将执行。但在java中,这将是编译时错误。你不能这样做。因此,PHP和Java@Rahul,我同意这一点,是的,我看到你会得到一个编译错误,但PHP没有编译器对吗?这只是一个解释。我将编辑答案。我编辑我的答案是因为我认为这个问题谈论的是静态变量。。。我不会抹掉我的答案,因为它可以带来一些额外的答案……很好,你明确了架构(特别是内存)的区别,但如果你引用了其他答案[]请给他们一个链接,以便其他人可以详细研究这个问题。您可以在PHP和Java中从静态方法调用非静态方法——您只需要提供调用它的对象。