php类是怎么创建的,零基础如何学好Java软件开发?
初学编程,用一种有趣的方式来引导初学者,会更容易入门,找到编程的乐趣;在学习的过程中,做好笔记,把遇到的问题,重点,难点都详细的记录下来,方便以后复习,多练习,多思考,多总结,实践才是硬道理;
以前学习Java的时候,看的是 “ 如鹏网 ”的《这样学Java不枯燥》视频教程,挺好玩的,没想到编程还可以这么学,课程体系的设置可以极大的激发对编程的兴趣,学起来不枯燥;通过开发超级玛丽,飞机大战,连连看,汤姆猫,电影的弹幕动画等来讲解Java的知识点,适合初学者学习,视频教程,课件,源码等都是可以免费下载的;
具体的可以到如鹏网官网上去了解一下,有网络的地方地方就可以学习,有问题随时提问,老师实时在线答疑,有新的课程,新的技术更新了,也是 可以继续申请了来学习的,口碑不错,基本上都是慕名而去的;
有详细的课程体系,可以参考一下,挺系统的;
第一部分:Java语言基础
第二部分:Java高级技术
第三部分:web前端
第四部分:Javaweb编程(核心阶段)
第五部分:企业框架
第六部分:项目阶段
第七部分:企业专题
以及Java的提高课程,内容包含:分布式、设计模式、前端技术、网络支付、全文搜索引擎、Docker、WebService等,具体的可以到如鹏网官网上去了解一下;
php如何获取客户端信息?
代码入下,只做参考
class userPCInfo{
//获取客户端浏览器
public static function get_client_browser(){
$sys = $_SERVER['HTTP_USER_AGENT']; //获取用户代理字符串
if (stripos($sys, "Firefox/") > 0) {
preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
$exp[0] = "Firefox";
$exp[1] = $b[1]; //获取火狐浏览器的版本号
} elseif (stripos($sys, "Maxthon") > 0) {
preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
$exp[0] = "傲游";
$exp[1] = $aoyou[1];
} elseif (stripos($sys, "MSIE") > 0) {
preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
$exp[0] = "IE";
$exp[1] = $ie[1]; //获取IE的版本号
} elseif (stripos($sys, "OPR") > 0) {
preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
$exp[0] = "Opera";
$exp[1] = $opera[1];
} elseif(stripos($sys, "Edge") > 0) {
//win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
$exp[0] = "Edge";
$exp[1] = $Edge[1];
} elseif (stripos($sys, "Chrome") > 0) {
preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
$exp[0] = "Chrome";
$exp[1] = $google[1]; //获取google chrome的版本号
} elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){
preg_match("/rv:([\d\.]+)/", $sys, $IE);
$exp[0] = "IE";
$exp[1] = $IE[1];
}else {
$exp[0] = "未知浏览器";
$exp[1] = "";
}
return $exp;
}
//获取客户端操作系统
public static function get_client_os(){
$agent = $_SERVER['HTTP_USER_AGENT'];
$os = false;
if (preg_match('/win/i', $agent) && strpos($agent, '95')){
$os = 'Windows 95';
}else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')){
$os = 'Windows ME';
}else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)){
$os = 'Windows 98';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)){
$os = 'Windows Vista';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)){
$os = 'Windows 7';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)){
$os = 'Windows 8';
}else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)){
$os = 'Windows 10';#添加win10判断
}else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)){
$os = 'Windows XP';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)){
$os = 'Windows 2000';
}else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)){
$os = 'Windows NT';
}else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)){
$os = 'Windows 32';
}else if (preg_match('/linux/i', $agent)){
$os = 'Linux';
}else if (preg_match('/unix/i', $agent)){
$os = 'Unix';
}else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)){
$os = 'SunOS';
}else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)){
$os = 'IBM OS/2';
}else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)){
$os = 'Macintosh';
}else if (preg_match('/PowerPC/i', $agent)){
$os = 'PowerPC';
}else if (preg_match('/AIX/i', $agent)){
$os = 'AIX';
}else if (preg_match('/HPUX/i', $agent)){
$os = 'HPUX';
}else if (preg_match('/NetBSD/i', $agent)){
$os = 'NetBSD';
}else if (preg_match('/BSD/i', $agent)){
$os = 'BSD';
}else if (preg_match('/OSF1/i', $agent)){
$os = 'OSF1';
}else if (preg_match('/IRIX/i', $agent)){
$os = 'IRIX';
}else if (preg_match('/FreeBSD/i', $agent)){
$os = 'FreeBSD';
}else if (preg_match('/teleport/i', $agent)){
$os = 'teleport';
}else if (preg_match('/flashget/i', $agent)){
$os = 'flashget';
}else if (preg_match('/webzip/i', $agent)){
$os = 'webzip';
}else if (preg_match('/offline/i', $agent)){
$os = 'offline';
}else{
$os = '未知操作系统';
}
return $os;
}
//获取ip地址
public static function get_ip() {
//判断服务器是否允许$_SERVER
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
} else {
//不允许就使用getenv获取
if (getenv("HTTP_X_FORWARDED_FOR")) {
$realip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
//获取当前ip所在城市
public static function GetIpLookup($ip = ''){
if(empty($ip)){
return '请输入IP地址';
}
$test= 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
$res = @file_get_contents($test);
return $res;
}
}
php静态类和非静态类的区别?
静态类和非静态类的主要区别:主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。
如何学习Web开发?
web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路
建议把本文打印到一张A4纸,搞定一条打个勾
web框架学习列表 如何定义 url router如何组织 request handler 函数写一个最简单的request handler 函数如何从get/post请求中取出参数如何定义全局url 拦截函数如何获取/修改/存储 cookie,session数据如何修改/输出 http header 数据如何部部署app 程序服务器部署可以参考读python web 程序的9种部署方式如何配置开发环境如何配置静态文件访问如何访问数据库是否支持ORM支持orm如何维护表结构的变更如何定义/组织/初始化 数据表如何对接orm系统和现有的表结构掌握最基本的add/delete/按字段查询/count/slice/order by如何直接使用sql 访问数据库不支持orm (这样的web框架,不用也罢)如何使用模板系统如何组织/访问 模板文件的目录结构如何在模板中嵌入代码模板是否支持继承结构模板之间如何include如何自定义模板函数如何通过http get/post 获取远程数据如何parse json如何parse xml如何输出为 json如何处理状态码:404和50x如何处理文件上传可选的学习项目 发送emaillog图片处理误区 表单验证辅助函数,很多框架的表单验证部分实现的特别复杂,初学者完全不需要,手写代码处理就够用ORM中的hasone,manytomany,onetomany关系,概念很复杂,其实只是多写/少写一个查询字段的关系,学习成本太高,初学者完全不需要理会,直接跳过。
如何快速学习一个WEB开发框架http://www.pcpob.com/article/view/1939-how-to-study-a-web-framework
如果已经学会了一个PHP框架,再去学习其他php框架,那么会很容易上手。但是如果还没有php框架基础,想去学习php框架,往往是一头雾水,不知道从哪里下手,从我学习php框架的经验,给大家分享一下,如何快速的去学习并掌握一个框架。一,选择一个合适的php框架 在国内,使用zf,ci和tp框架的人比较多,新手可以从中选一个去学习,新手不建议一开始就去学习zf,功力还不够深,学习zf会让你更迷茫。如果php基础实在太差,学习ci和tp都觉得有点难度,那么建议去学习一下我做的框架--canphp框架(简称cp,qq群:74781204),cp=ci+tp的结晶,更为简单,更容易理解。二,选定一个php框架之后,如何去学习第一步,把下载回来的框架压缩包解压,然后把每个目录和文件名,大致的浏览一遍。这样可以大概看出,这个php框架中大致布局和具有哪些功能。第二步,学习输出hello world,hello world很简单,但是对于学习一门新的语言或框架,很重要。第三步,学习理解单一入口和网址解析(即网址路由),单一入口,对于新手来说,可能有点不太好理解。第四步,学习php框架的内置的模板操作,主要学习程序是怎么赋值给模板,怎么加载模板和常用的模板标签第五步,学习数据库的添加,修改,删除,查询,学会简单的数据库操作。第六步,学习php框架常用的函数和类库,php框架中一般会带一些常用的函数和类,可以稍微看一下,此时还没有必要深入研究,等用到的时候再详细的去看手册和样例。第七步,下载基于此框架开源的项目系统下来学习,了解了php框架的执行流程,模板操作,和数据库操作,下载一个开源的系统,下来去学习,学习别人的代码,学得更快。第八步,做项目学习,要熟练掌握一个的框架,需要大量的实践,通过做项目,去深入学习。第九步,阅读框架代码,了解其实现原理
第十步,到这一步,你已经学会了这个php框架。
在StackExchange上有人问了这样一个问题:What should every programmer know about web development?(关于Web开发,什么是所有程序员需要知道的?)里面给出的答案非常不错,所以,我翻译转载过来。 顺便说一下,StackExchange真是非常好,大家可以对同一个答案做贡献和修订,看看这个问题的修订过程你就知道了——专业的问答网站应该怎么去做。这就是我在这篇文章中也说过真正的用户体验是什么样的。
好了,下面是正文(我对原文做了一些批注,也许不对或有误导,请大家指正)
下面的这些东西可能对于大多数人并不陌生,但是可能会有些东西你以前并没有看过,或是没有完全搞懂,甚至都没有听说过。(陈皓注:我相信当你看完这个列表后,你会觉得对于我国的Web开发有点弱了,还是那句话,表面上的东西永远是肤浅的)
接口和用户体验
小心浏览器的实现标准上的不一致,确信让你的网站能够适当地跨浏览器。至少,你的网站需要测试一下下面的浏览器:最新的 Gecko 引擎 (Firefox),一个 Webkit 引擎 (Safari,Chrome, 或是其它的移动设备上的浏览器)IE 浏览器 (测试IE的兼容性你可以使用微软IE的Application Compatibility VPC Images)Opera 浏览器。最后,你可以使用一下这个工具 来看看你的网页在不同的浏览器下是怎么被显示出来的(陈皓注:这个工具就是以前本站介绍过的在不同浏览器和平台上检查你的网站的兼容性)
多考虑一下人们是怎么来访问你的网站而不是那些主流的浏览器:手机,读屏软件和搜索引擎,例如:一些Accessibility的东西: WAI 和 Section508, 移动设备开发:MobiForge.部署Staging:怎么部署网站的更新而不会影响用户的访问。 Ed Lucas的答案 可以让你了解一些(陈皓注:Ed说了一些如版本控制,自动化build,备份,回滚等机制)。千万不要直接给用户显示不友好的错误信息。千万不要把用户的邮件地址以明文显示出来,这样会被爬虫爬走并被让用户的邮箱被垃圾邮件搞死。为用户的链接加上 rel="nofollow" 的属性以 避免垃圾网站的干扰。(陈皓注:nofollow是HTML的一个属性,用于通知搜索引擎“这个链接所指向的网页非我所能控制,对其内容不予置评”,或者简单地说,该链接不是对目标网站或网页的“投票”,这样搜索引擎不会再访问这个链接。这个是用来减少一些特定垃圾页面对原网站的影响,从而可以改善搜索结果的质量,并且防止垃圾链接的蔓延。)为网站建立一些的限制 这个属于安全性的范畴。(陈皓注:比如你在Google注册邮箱时,你一口气注册超过两个以上的邮箱,gmail要求给你发短信或是给你打电话认证,比如Discuz论坛的会限制你发贴或是搜索的间隔时间等等,更多的网站会用CAPTCHA来确认是人为的操作。 这些限制都是为了防止垃圾和恶意攻击)学习如何做 Progressive Enhancement. (陈皓注:Progressive Enhancement是一个Web Design的理念,如:1)基础的内容和功能应该可以被所有的浏览器存取,2)页面布局的应该使用外部的CSS链接,3)Javascript也应该是外部链接还应该是unobtrusive 的,4)应该让用户可以设置他们的偏好)如果POST成功,要在POST方法后重定向网址,这样可以阻止用户通过刷新页面重复提交。严重关注Accessibility。因为这是法律上的需求(陈皓注:Section 508是美国的508法案,其是美国劳工复健法的改进,它是一部联邦法律,这个法律要求所有技术要考虑到残障人士的应用,如果某个大众信息传播网站,如果某些用户群体(如残疾人)浏览该网站获取信息时,如果他们无法正常获得所期望的信息(如无法正常浏览),那可以依据相关法规,可以对该网站依法起诉)。WAI-ARIA 为这方面的事提供很不错的资源.安全
在网上有很多关于安全的文章,但是 OWASP 开发指导 涵盖了几乎所有关于Web站点安全的东西。(陈皓注:OWASP(开放Web应用安全项目Open Web Application Security Project)是一个开放的非营利性组织,目前全球有130个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。OWASP被视为Web应用安全领域的权威参考。2009年下列发布的美国国家和国际立法、标准、准则、委员会和行业实务守则参考引用了OWASP。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则)PHP是计算机类的吗?
是属于计算机语言类.
具体如下:
php,一个嵌套的缩写名称,是英文“超级文本预处理语言”(php:hypertext preprocessor)的缩写。php 是一种 html 内嵌式的语言,php与微软的asp颇有几分相似,都是一种在服务器端执行的“嵌入html文档的脚本语言”,语言的风格有类似于c语言,现在被很多的网站编程人员广泛的运用。php 独特的语法混合了 c、java、perl 以及 php 自创新的语法。它可以比 cgi 或者 perl 更快速的执行动态网页。用php做出的动态页面与其他的编程语言相比,php是将程序嵌入到html文档中去执行,执行效率比完全生成html标记的cgi要高许多;与同样是嵌入html文档的脚本语言javascript相比,php在服务器端执行,成分利用了服务器的性能;php执行引擎还会将用户经常访问的php程序驻留在内存中,其他用户在一次访问这个程序时就不需要诚信编译程序了,只要直接执行内存中的代码就可以了,这也是php高效率的体现之一。php具有非常强大的功能,所有的cgi或者javascript的功能php都能实现,而且支持几乎所有流行的数据库以及操作系统。