下载php封装类方法(php封装协议)

发布时间:2022-11-14

本文目录一览:

  1. ThinkPHP中怎么使用自定义的封装类
  2. 如何在php扩展中封装一个c++类
  3. 网上下载了一个封装好的php源码,如何在另一个php文件中调用这个get_code_image的函数呢?
  4. 如何使用PHP获取客户端及服务器端IP的封装类
  5. ThinkPHP里面怎么使用自己封装的类

ThinkPHP中怎么使用自定义的封装类

类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php; 类的命名空间地址和所在的路径地址一致,例如 Home\Controller\UserController类所在的路径应该是 Application/Home/Controller/UserController.class.php; 确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写); 类名和文件名一致(包括上面说的大小写一致),例如 UserController类的文件命名是UserController.class.phpInfoModel类的文件名是InfoModel.class.php,并且不同的类库的类命名有一定的规范; 类的导入加载可以参考手册的命名空间和自动加载,下面是地址: 命名空间: 自动加载:

如何在php扩展中封装一个c++类

首先,要到了Query归一化的C++版本源代码。 query归一化 引用第三方的类库有两种方法,一种是静态引用,一种是动态引用,推荐使用静态引用,因为静态引用的情况下,会把类库打包到php的扩展.SO文件中,这样我们不必担心依赖关系,带着类库到处跑了。 先用gcc产生.o文件,再用.o产生最终的静态库.a文件:

gcc -c -fpic queryword.cpp tradmap.cpp transcode.cpp -I . -O2
ar -r libqueryword.a queryword.o tradmap.o transcode.o

上边图中有产生的.o.a文件。 如果要动态编译so的话,就是这个:

gcc -c -fpic -O3 queryword.cpp tradmap.cpp transcode.cpp -I .
gcc -shared queryword.o transcode.o tradmap.o -o libqueryword.so

好,现在有了libqueryword.a静态库,我们就可以开始做我们的扩展了。 先使用ext_skel工具生成我们框架的骨架:

./ext_skel --extname=queryword

把上边的静态库放到 ./lib 目录下。 然后修改config.m4文件。 去掉一些注释符 dnl,再添加两行,最后config.m4里,有用的就是这几行:

PHP_ARG_ENABLE(queryword, whether to enable queryword support,
Make sure that the comment is aligned:
[  --enable-queryword    Enable queryword support])
if test "$PHP_QUERYWORD" != "no"; then
  PHP_ADD_INCLUDE(./lib)
  PHP_ADD_LIBRARY(stdc++, 1, QUERYWORD_SHARED_LIBADD)
  PHP_ADD_LIBRARY_WITH_PATH(queryword, ./lib, QUERYWORD_SHARED_LIBADD)
  PHP_REQUIRE_CXX()
  PHP_SUBST(QUERYWORD_SHARED_LIBADD)
  PHP_NEW_EXTENSION(queryword, queryword.cpp, $ext_shared)
fi

其中:

  • PHP_REQUIRE_CXX()用于指定这个扩展用到了C++
  • PHP_ADD_LIBRARY(stdc++, 1, QUERYWORD_SHARED_LIBADD)用于将标准C++库链接进入扩展
  • PHP_NEW_EXTENSION用于指定有哪些源文件应该被编译,文件和文件之间用空格隔开。ext_skel默认生成的模块框架是针对C的,我们要使用C++,那以上说明的两个宏就是必须的。另外还要把queryword.c改名成queryword.cpp,所以PHP_NEW_EXTENSION原本包括的queryword.c也要修改。 默认生成的queryword.c(现在改名为queryword.cpp)已经包含了一个测试性质的导出函数,通过那个例子就可以大概明白怎么添加自己的函数了。zend_function_entry是导出函数列表,zend_module_entry描述了模块的信息。不过因为是C++了,还是有几点要修改的,否则跑不起来:

网上下载了一个封装好的php源码,如何在另一个php文件中调用这个get_code_image的函数呢?

假设你这个二维码类的名字是Code 能实例化的,直接new一下:

$xxx = new Code;
$yyy = $xxx->get_code_image('');

就可以直接调用这个类下的方法了;

如何使用PHP获取客户端及服务器端IP的封装类

本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下: 客户端IP相关的变量:

  1. $_SERVER['REMOTE_ADDR']:客户端IP,有可能是用户的IP,也有可能是代理的IP。
  2. $_SERVER['HTTP_CLIENT_IP']:代理端的IP,可能存在,可伪造。
  3. $_SERVER['HTTP_X_FORWARDED_FOR']:用户是在哪个IP使用的代理,可能存在,可以伪造。 服务器端IP相关的变量:
  4. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。
  5. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.confBindAddress的设置值相关)。在客户端测试结果正确。 类如下:
class getIP {
    function clientIP() {
        $cIP = getenv('REMOTE_ADDR');
        $cIP1 = getenv('HTTP_X_FORWARDED_FOR');
        $cIP2 = getenv('HTTP_CLIENT_IP');
        $cIP1 ? $cIP = $cIP1 : null;
        $cIP2 ? $cIP = $cIP2 : null;
        return $cIP;
    }
    function serverIP() {
        return gethostbyname($_SERVER["SERVER_NAME"]);
    }
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ', $clientIp, '<br />';
echo 'Server IP is ', $serverIp, '<br />';

ThinkPHP里面怎么使用自己封装的类

TP:是一个PHP开源框架,你可以理解成一个工具箱。里面很多类、业务逻辑等都是封装好的,有自己的使用规则。如果你PHP不是很精通,我建议你还是先去做原生态的PHP,然后再用框架比较好。嘿嘿。 CMS:是一个内容管理系统,它不是一个特定的东西,很多公司都有CMS。 总结:TP是工具,CMS是产品。这样能理解吗? 分析:我估计你的意思可能是想找一个目前公司使用比较广泛的东西,给自己定目标是吗?怎么说呢。还是那句话,你的PHP不精通,这两个弄起来很困难,而且很费时间。不划算,知识这个东西不能空中楼阁,要一点一点的来,慢不怕,关键是每一天都有进步。这里我给你一点建议吧。 建议:

  1. PHP基础:函数的使用、自定义函数、变量的作用域、“”的作用等,都是基础的东西。
  2. OOP(面向对象):这个怎么说呢,说复杂也复杂,说简单也简单。我的方法是你把生活中的东西抽象出来就学得很快。它包括的内容比较宽泛,需要上面第一条的基础。只要你第一条越扎实,你学OOP就会越快。OOP这个东西是个思想。建议:你开始的时候只要能看懂,能明白别人代码里OOP的意思就OK了,然后自己写一写。这里还包括继承、封装、多态等。你先了解它们的用途,然后是抽象类、抽象方法等,了解它们的规则,比如抽象类不需要实现,但其中必须要包含一个抽象方法。接口:接口是允许继承多个接口的,然后了解一下接口和抽象类的区别。然后再去研究一下PHP OOP里面的一些固定语法或者说是规则。然后就OK了。
  3. 了解设计模式:自己写点东西,对这玩意有所了解,别学完了都忘了。
  4. 然后你就可以去看TP或者CMS之类的东西了:对于CMS我建议,你还是先会用,然后再去研究它的构造。西西。