当前位置: 潍坊三六九 > php

php

内容

PHP中的变量类型和值是通过C语言实现的,内核具体是如何组织用户在PHP中定义的变量呢?HashTable在ZE内核中被广泛使用,PHP变量也正是存储在一个HashTable实现的符号表里。当在PHP中调用一个函数或者类时,内核会创建一个新的符号表,这也是为什么在函数中无法使用函数外部定义的变量的原因。因为他们分属两个符号表,一个当前作用域,一个全局作用域。现在来看内核中是如何定义作用域的:struct_zend_executor_globals{... 所有的编程语言都要提供一种数据的存储与检索机制,PHP也不例外。其它语言大都需要在使用变量之前先定义,并且它的类型也是无法再次改变的,而PHP却允许程序猿自由的使用变量而无须提前定义,甚至可以随时随意的对已存在的变量转换成其它任何PHP支持的数据类型。在程序在运行的时候,PHP还会自动的根据需求转换变量的类型。如果你用过PHP,肯定体验过PHP的弱类型的变量体系。众所周知,PHP引擎是用C写的,而C确实一种强类型的编程... PHP内核提供了三个基础宏来方便我们对变量的值进行操作,这几个宏同样以Z_开头,并且P结尾和PP结尾的同上一节中的宏一样,分别代表这参数是指针还是指针的指针。此外,为了进一步方便我们的工作,内核中针对具体的数据类型分别定义了相应的宏。如针对IS_BOOL型的BVAL组合(Z_BVAL、Z_BVAL_P、Z_BVAL_PP)和针对IS_DOUBLE的DVAL组合(Z_DVAL、ZDVAL_P、ZDVAL_PP)等等。我们通过下面这个例子来应用一下这几个宏:voiddisplay_value(zva... 我们已经知道php变量在内核中其实是通过zval结构来实现的,也初步了如果设置一个zval结构的类型和值,这一节我们的目的便是在前两节的基础上,彻底掌握对zval结构的操控,其间将引入很多超棒的新的宏。在code的时候,我们很希望在内核中创建的zval可以让用户在PHP语言里以变量的形式使用,为了实现这个功能,我们首先要创建一个zval。最容易想到的办法便是创建一个zval指针,然后申请一块内存并让指针指向它。如果你脑海里浮现出... 大家都知道PHP脚本在执行的时候用户全局变量(在用户空间显式定义的变量)会保存在一个HashTable数据类型的符号表(symbol_table)中,在PHP中有一些比较特殊的全局变量例如:$_GET,$_POST,$_SERVER等变量,我们并没有在程序中定义这些变量,并且这些变量也同样保存在符号表中,从这些表象我们不难得出结论:PHP是在脚本运行之前就将这些特殊的变量加入到了符号表中了。$GLOBALS的初始化我们以cgi模式为例说明$GLOBALS的初始化。... 用户在PHP语言里定义的变量,我们能否在内核中获取到呢?答案当然是肯定的,下面我们就看如何通过zend_hash_find()函数来找到当前某个作用域下用户已经定义好的变量。zend_hash_find()函数是内核提供的操作HashTable的API之一,如果你没有接触过,可以先记住这么使用就可以了。{zval**fooval;if(zend_hash_find(EG(active_symbol_table),//这个参数是地址,如果我们操作全局作用域,则需要&EG(symbol_table)... 现在我们已经可以从符号表中获取用户在PHP语言里定义的变量了,是该做点其它事的时候了,举个比例,比如给它来个类型转换。想想C语言中的类型转换细则,你的头是不是已经大了?但是变量的类型转换就是如此重要,如果没有,那我们的代码就会是下面这样了:voiddisplay_zval(zval*value){switch(Z_TYPE_P(value)){caseIS_NULL:/*如果是NULL,则不输出任何东西*/break;caseIS_... Windows下Memcached的安装配置方法1、将第一个包解压放某个盘下面,比如在c:\memcached。2、在终端(也即cmd命令界面)下输入'c:\memcached\memcached.exe-dinstall'安装。3、再输入:'c:\memcached\memcached.exe-dstart'启动。(需要注意的:以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了)。4、下载php_memcache.dll文件,把它放入php文件夹的ext目录中。5、在php.ini加入一... <? function GetIP() { //获取IP     if ($_SERVER["HTTP_X_FORWARDED_FOR"])         $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];     else if ($_SERVER["HTTP_CLIENT_IP"])         $ip = $_SERVER["HTTP_CLIENT_IP"];&n... php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。在很多时候利用php的exec,system等函数调用系统命令可以帮助我们更好更快的完成工作。比如前二天笔者在批量处理.rar文件时exec就帮我了大忙了。今天整理一下常用的调用系统函数发出来和大家分享经验。注意:要想使用这二个函数php.ini中的安全模式必须关闭,要不然为了安全起见php是不让调用系统命令的。先看一...

相关推荐

推荐信息