php中函数库和类库到底有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中函数库和类库到底有啥区别?相关的知识,希望对你有一定的参考价值。
以 .func.php(函数库) 或 .class.php(类库) 后缀命名
参考技术A 首先你要知道什么是函数,比如这一个is_mail($str)//判断的内容
假如这个is_mail可以用来判断用户提交的数据是否是email格式的,这就是一个功能。判断is_mail的功能。
使用的时候只要
if(is_mail($str))
else
函数库
就是很多函数的集合。有很多功能,你就不用自己重新写了,直接使用就可以。
而类库,你要先理解类。
类,你可以理解为函数根据实际需求分类存放的一个地方。因为如果项目很大,就会有很多函数,如果不分类,有时候就很难找到了。根据函数的功能,把一类函数都整合到一个类里面,使用起来就很方便。
比如数据库操作类。
所有数据库操作的函数都放在里面了,你只要调用就可以了。
$db = new data();
$db->qurey();//使用$db类的qurey方法,其实就是使用qurey这个函数。
而类库,就是很多可以直接使用的类。
总而言之,函数库和类库,可以大大提升开发效率。追问
没有点明不同之处和相同之处,谢谢
函数的作用域和类的作用域有啥区别
【中文标题】函数的作用域和类的作用域有啥区别【英文标题】:What's the difference between the scope of a function and a class函数的作用域和类的作用域有什么区别 【发布时间】:2019-03-29 12:58:57 【问题描述】:我使用ros
并尝试将订阅者和服务器的定义放入外部函数中。然后回调没有运行。 spin()
函数不起作用。但是我经常看到其他人将服务器的定义放入一个类中,并且回调会起作用。那么这两个场景有什么区别呢?
这会起作用
int main(int argc, char **argv)
ros::init(argc, argv, "cood_tran");
ros::NodeHandle nh;
std::cout << "coodTran" << std::endl;
target_obj = "None";
ros::param::get("target", target_obj);
ros::Subscriber ros_coord_pixel_sub =
nh.subscribe("/darknet_ros/bounding_boxes", 1, darknetCallback);
ros::Subscriber point_cloud_sub =
nh.subscribe("camera/depth_registered/points", 1, pointCouldCallback);///camera/depth_registered/points /camera/depth_registered/points<->color_optical
ros::ServiceServer location_server =
nh.advertiseService("location_srv", location);
ros::spin();
return 0;
这行不通
int main(int argc, char **argv)
ros::init(argc, argv, "cood_tran");
ros::NodeHandle nh;
coodTran(nh);
ros::spin();
return 0;
void coodTran(ros::NodeHandle nh)
std::cout << "coodTran" << std::endl;
target_obj = "None";
ros::param::get("target", target_obj);
ros::Subscriber ros_coord_pixel_sub =
nh.subscribe("/darknet_ros/bounding_boxes", 1, darknetCallback);
ros::Subscriber point_cloud_sub =
nh.subscribe("camera/depth_registered/points", 1, pointCouldCallback);///camera/depth_registered/points /camera/depth_registered/points<->color_optical
ros::ServiceServer location_server =
nh.advertiseService("location_srv", location);
这将起作用:
#include <darknet_ros/YoloObjectDetector.hpp>
#include <ros/ros.h>
int main(int argc, char** argv)
ros::init(argc, argv, "darknet_ros");
ros::NodeHandle nodeHandle("~");
darknet_ros::YoloObjectDetector yoloObjectDetector(nodeHandle);
ros::spin();
return 0;
【问题讨论】:
scope 我不明白这个问题。函数和类的范围没有任何共同之处。我能看到的唯一联系是您在两者中都声明了东西,并且它们由花括号分隔。我也看不到显示的代码与所问问题之间的联系。 【参考方案1】:在第二个片段中,您按值传递 NodeHandle。因此,在 coodTran 中,您正在更改原始 nh 的副本。 尝试像这样通过引用传递它:
void coodTran(ros::NodeHandle& nh)
nh.sunscribe();
或者传递指向原始对象的指针:
void coodTran(ros::NodeHandle* nh)
nh->sunscribe();
或者在函数中创建节点并返回句柄:
ros::NodeHandle coodTran()
ros::NodeHandle nh;
nh->sunscribe();
return nh;
【讨论】:
它不起作用。我想原因可能是subscribe的定义在main函数之外。 什么不完全有效?我的意思是,您尝试过哪种变体,它是如何失败的?以上是关于php中函数库和类库到底有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章