PHP var关键字相关原理及使用实例解析

见很多朋友说在php中定义变量用不用var都没关系,其实不然。

看看例子,如果我这样使用var:

var $a=123;
echo $a;
//那么程序会提示语法错误,要去掉var这个变量定义才行。直接
$a=123;
echo $a;
//这样才不会报错,php是弱类型语言,所以不声明类型是没问题的。

那var什么时候才能用,请看:

class Test{
var $a=123;//访问控制,这里的var不用就不正常,当然你可以用public protected等关键词代替,来声明成员变量的属性

}
$obj=new Test();
echo $obj->a;
//打印结果:123

如果把var换成public,一样可以的。

但是这个时候你在类中去掉var,什么访问修饰符都没有,那会提示语法错误的。

其实我经过测试,认为var就是public的别名,是用在类中定义公有属性的,只不过历史问题,现在不用var了。后来查了查php官网,果然如此。

php官方的解释:
类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。

Note: 为了兼容性考虑,在 PHP 4 中使用 var 关键字对变量进行定义的方法在 PHP 5 中仍然有效(只是作为 public 关键字的一个别名)。在 PHP 5.1.3 之前的版本,该语法会产生一个 E_STRICT 警告

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-07-10

PHP提示Notice: Undefined variable的解决办法

PHP默认配置会报这个错误,我的PHP版本是5.2.13,存在这个问题: Notice: Undefined variable 这就是将警告在页面上打印出来,虽然这是有利于暴露问题,但实现使用中会存在很多问题. 需要设置显示错误级别,来解决问题. 网络上的通用解决办法是修改php.ini的配置: 解决方法: 1) error_reporting设置: 找到error_reporting = E_ALL 修改为error_reporting = E_ALL & ~E_NOTICE 2) regis

PHP中echo,print_r与var_dump区别分析

本文较为详细的分析了PHP中echo,print_r与var_dump区别.分享给大家供大家参考.具体分析如下: 三者都是具有输出功能的php语句,但print_r(expression),var_dump(expression)是函数,echo只是语言结构,不是函数,因此不能作为表达式的一部分. 对于操作php的8种数据类型来说: ① echo 用于输出数值变量或者是字符串.但使用echo来输出引用变量时,如数组,仅输出数组的名字:当输出一个对象时,服务器提示<Catchable fatal

php中var_export与var_dump的区别分析

一 var_dump (PHP 3 >= 3.0.5, PHP 4, PHP 5) var_dump -- 打印变量的相关信息 描述 void var_dump ( mixed expression [, mixed expression [, ...]] ) 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值,通过缩进显示其结构. 复制代码 代码如下: $data = array ('name' => 'abc', 'job' => 'programmer

php输出echo、print、print_r、printf、sprintf、var_dump的区别比较

用.net开发已经5年了,最近突然想接触一下.net以外的东西,于是乎就来看看php了.在学习php中首先看看几个输出函数.一.echoecho() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并不返回值,所以不能使用它来赋值.例子: 复制代码 代码如下: <?php  $a = echo("55nav"); // 错误!不能用来赋值  echo &quo

PHP中的print_r 与 var_dump 输出数组

print_r() 和 var_dump() 函数可以打印输出整个数组内容及结构. print_r() 利用 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素.注意 print_r() 函数不仅是只用于打印,实际它是用于打印关于变量的易于理解的信息. 语法: bool print_r( mixed expression )例子: <?php $arr_age = array(18, 20, 25); print_r($arr_age); ?> 运行该例子输出:

php 出现Strict Standards: Only variables should be passed by reference in的解决方法

这个问题多半是因为引用传递参数引起的,解决办法一是修改代码不使用引用传递:另一个办法是修改php配置文件,修改error_reporting 其值改为error_reporting = E_ALL& ~E_NOTICE.或者修改函数中的引用方式即可. ps:修改配置文件时,最好是复制一行,注掉,然后再改,如果需要随时切回. ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法 今天安装ecsh

php中get_object_vars()方法用法实例

本文实例分析了php中get_object_vars()方法的用法.分享给大家供大家参考.具体分析如下: 语法:get_object_var($object),返回一个数组.获取$object对象中的属性,组成一个数组 实例: <?php class person{ public $name="王美人"; public $age = 25; public $birth; } $p = new person(); print_r(get_object_vars($p)); ?>

php var_export与var_dump 输出的不同

问题发现在跟踪yratings_get_targets的时候,error_log(var_export(yblog_mspconfiginit("ratings"),true));老是打印出yblog_mspconfiginit("ratings")的返回是NULL 导致我以为是无法建立和DB的连接,走错路了一天.最后才发现,这是var_export和var_dump的区别之一 这就是:问题原因var_export必须返回合法的php代码, 也就是说,var_exp

PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法

其实,这是一个非常容易解决掉的问题.在我看来,似曾相识,呵呵,最近学JavaScript可是学会了使用var声明变量. 其实,在PHP中根本不需要使用var声明的,但是当一个变量作为一个类的成员变量的时候,使用var还是没有问题的. 在外部使用var就报错Parse error: syntax error, unexpected T_VAR in...,例如我的出错信息: Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\ht

PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法

今天在写PHP程序的时候总是出现这样的错误:Parse error: syntax error, unexpected end of file in *.php on line *,然后我就根据提示,找到那个文件,然后错误中总是提示最后一行出错,我找到最后一行发现是</html>,晕的,这能有什么错误,找了好久才找到问题所在,拿来分享. 出现这个错误的原因就是语法错误,肯定是PHP程序的书写不规范造成,我后来一条一条看才发现,原来是PHP语句标识符错了,正常情况下应该是这样的:<?php

PHP Parse Error: syntax error, unexpected $end 错误的解决办法

这几天写php程序,感觉很多地方不如asp,asp.Net,jsp顺手,比如session使用先得session_start();,文件跳转header用的也不方便.... 也许是不熟悉的php的一些特性吧,不过写多了,也就慢慢适应将就了..... 这里就整理一个代码编写调试问题,错误如下: Parse error: syntax error, unexpected $end in D:\xampp\htdocs\guestBook\guestBook.php on line 330 看看程序

安装ImageMagick出现error while loading shared libraries的解决方法

本文实例讲述了安装安装ImageMagick出现error while loading shared libraries的解决方法.分享给大家供大家参考.具体解决方法如下: 运行程序时,如遇到像下列这种错误: ./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory 那就表示系统不知道xxx.so 放在哪个目录下. 这个时候就要

python出现"IndentationError: unexpected indent"错误解决办法

python出现"IndentationError: unexpected indent"错误解决办法 Python是一种对缩进非常敏感的语言,最常见的情况是tab和空格的混用会导致错误,或者缩进不对 如下图中的代码: 以上代码中第一次运行可以正常运行 但是第二次运行时就报错了, 原因就是第二次再e之前加了一个空格" " 解决办法只要将e之前的空格删除即可 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一下过程,方便有遇到类似情况的朋友们可以有的参照,下面话不多说,来一起看看详细的介绍吧. 解决过程: 我用的是MySql5.5版本的数据库.出现以上错误的时候先用命令->show engines;查看一下引擎详情: 发现并没有innodb这个条目: 然后我们查看日志

MySQL ERROR 2013 (HY000)错误解决方法

当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 . 如果是在linux shell命令行中直接打 mysql 命令,能够顺利连上 MySQL,执行查询语句也比较正常,但如果执行 STOP SLAVE; 命令时就随机出现 ERROR 2013 (HY000): Lo

php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error

复制代码 代码如下: 1.调用模板中的判断语句不正确. 2.调用php或SiteEngine的一些函数不正确. 3.一些单引号或双引号引起的问题.

HTTP 错误 500.19- Internal Server Error 错误解决方法

刚在本机部署了一个WebService测试,浏览的时候出现了"HTTP 错误 500.19 - Internal Server Error "错误,如下图: 经过检查发现是由于先安装vs2008后安装iis的缘故,只需重新注册下AspNet就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录. 3 输入aspnet_regiis.exe –i 执行既可 注意:如

Mysql ERROR 1577错误解决方法

今天将Mysql升级到了5.1.31,用Navicat打开数据库添加数据,出现了1577错误,提示信息: 复制代码 代码如下: ERROR 1577 (HY000): Cannot proceed because system tables used by Event Scheduler were found damaged at server start. 查看手册(5.4. mysql_fix_privilege_tables:升级MySQL系统表),一些MySQL发布对mysql数据库中的