① 本人新手,刚安装thinkphp,怎么不成功
快速入门(一):基础
简介
ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。
本快速入门教程针对3.2.3最新版本制作,虽然大部分特性3.2版本同样存在,但是强烈建议你使用3.2.3版本来学习本入门教程。
下载
ThinkPHP最新版本可以在官方网站(http://thinkphp.cn/down/framework.html)下载。
最新的3.2.3版本下载地址:http://www.thinkphp.cn/down/610.html。
如果你希望保持最新的更新,可以通过github获取当前最新的版本(完整版)。
Git获取地址列表(你可以选择一个最快的地址):
Github:https://github.com/liu21st/thinkphp
Oschina:http://git.oschina.net/liu21st/thinkphp.git
Code:https://code.csdn.net/topthink2011/ThinkPHP
Coding:https://git.coding.net/liu21st/thinkphp.git
wwwWEB部署目录(或者子目录)
├─index.php入口文件
├─README.mdREADME文件
├─composer.jsonComposer定义文件
├─Application应用目录
├─Public资源文件目录
└─ThinkPHP框架目录
3.2版本开始相比之前的版本自带了一个完整的应用目录结构(Application)和默认的应用入口文件(index.php),开发人员可以在这个基础之上灵活调整(目录名称和位置)。其中,Application和Public目录下面都是空的,而README.md和composer.josn文件仅用于说明,实际部署的时候可以删除。
其中,ThinkPHP为框架核心目录,其目录结构如下:
├─ThinkPHP框架系统目录(可以部署在非web目录下面)
│├─Common核心公共函数目录
│├─Conf核心配置目录
│├─Lang核心语言包目录
│├─Library框架类库目录
││├─Think核心Think类库包目录
││├─Behavior行为类库目录
││├─OrgOrg类库包目录
││├─Vendor第三方类库目录
││├─...更多类库目录
│├─Mode框架应用模式目录
│├─Tpl系统模板目录
│├─LICENSE.txt框架授权协议文件
│├─logo.png框架LOGO文件
│├─README.txt框架README文件
│└─index.php框架入口文件
框架核心目录的结构无需改变,但框架的目录名称(ThinkPHP)可以在应用入口文件中随意更改。
入口文件
在开始之前,你需要一个Web服务器和PHP运行环境,如果你暂时还没有,我们推荐使用集成开发环境WAMPServer(是一个集成了Apache、PHP和MySQL的开发套件,而且支持多个PHP版本、MySQL版本和Apache版本的切换)来使用ThinkPHP进行本地开发和测试。
3.2版本开始框架自带了一个应用入口文件,默认内容如下:
define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
这段代码的作用就是定义应用目录和加载ThinkPHP框架的入口文件,这是所有基于ThinkPHP开发应用的第一步。
然后,在浏览器中访问运行后我们会看到欢迎页面:
namespaceHomeController;
useThinkController;
{
publicfunctionindex(){
$Data=M('Data');//实例化Data数据模型
$result=$Data->find(1);
$this->assign('result',$result);
$this->display();
}
}
这里用到了M函数,是ThinkPHP内置的实例化模型的方法,而且用M方法实例化模型不需要创建对应的模型类,你可以理解为M方法是直接在操作底层的Model类,而Model类具备基本的CURD操作方法。
M('Data') 实例化后,就可以对think_data数据表(think_是我们在项目配置文件中定义的数据表前缀)进行操作(包括CURD)了,M函数的用法还有很多,我们以后会深入了解。
定义好控制器后,我们修改模板文件,添加数据输出标签如下:
<html><head><title></title></head><body>{$result.id}--{$result.data}</body></html>
模板标签的用法和Smarty类似,就是用于输出数据的字段,这里就表示输出think_data表的id和data字段的值。
我们访问会输出:
1--thinkphp
如果发生错误,检查你是否开启了调试模式或者清空Runtime目录下面的缓存文件。
如果你看到了上面的输出结果,那么恭喜你已经拿到了入门ThinkPHP的钥匙!
② 程序员来回答吧 coding 是指什么
纳尼 那我的理解正好相反 我理解的coding是写代码实现功能的
③ php怎样写开发方案
主要是看要建什么网站
方案的确定主要从以下几个方面考虑
1.网站的功能需求
2.网站面向的客户群
3.网站的负载
④ 关于php面向对象的问题,求对框架原理了解的大神。
自己设计框架学习意义远大于实用意义,设计的过程中可能会浪费你不少时间,而且你可能以后永远不会(99%)用到自己设计的框架,但是对你深入了解PHP还是很有帮助的。
(我自己也有在设计一个框架,如有兴趣,可以发给你一起研究)
大部分PHP MVC框架中心思想都是一样的:
首先要单文件入口(index.php),就是所有的访问都通过一个文件来控制,这样就能控制流程了。要实现这个功能就需要apache或者nginx的设置来配合了。以apache为例,最经典的.htacess:
<IfMolemod_rewrite.c>
RewriteEngineOn
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule^(.*)$index.php?_url=$1[QSA,L]
</IfMole>
此文件的作用就是如果如果访问的文件或者文件夹存在的话就直接调用文件(用来处理访问/public/css, /public/js之类的请求),不然的话就将请求转发给index.php。此时index.php可以调用$_GET['_url'] 来获得请求。
#一般框架遵循的规则是:[地址]/[控制器名字]/[方法名字]/[参数/参数]
#请求:localhost/test/helloworld/china/shanghai
#在index.php里就可以访问$_GET['_url']来获得字符串:/test/helloworld/china/shanghai
然后将字符串explode()成array,根据默认规则获得以下信息(如果愿意可以自己写一个路由而不用默认方法解析路径)
控制器:test
方法:helloworld
参数:china, shanghai
先在test.php中:
classtest
{
publicfunctionhelloworld($country,$city)
{
echo'Hello,Iamfrom',$country,$city;
}
}
然后在index.php中:
#这里可以自己定义一个__autoload方法来让PHP自行require_once()class文件,就不用自己一个一个include()了。
#初始化一个控制器实例:
$test=newtest();
#调用控制器中的方法,并递交参数
#请查阅PHP函数call_user_func_array()的使用方法
call_user_func_array(array($test,'helloworld'),array('china','shanghai'));
这样就完成了一个简单的MVC框架,剩下的就是继续完善他,你可能需要学习以下知识:
PHP __autoload()的设计和命名空间(namespace)的设计
各种软件设计模式:singleton, dependency injection, lazy loading
OOP(面向对象编程)PHP类的继承模式(extends class), PHP接口(implements interface)
PHP数据库操作类: mysqli类, pdo类
HTTP请求,header中的各种参数设置
Web Programming的安全事项, 如xss防护
《代码简洁之道》,《PHP Zend Coding Style》
希望能帮助到你!
⑤ PHP框架我用的BROPHP怎么从数据库里面汉字取出来的是问号应该怎么改编码随便看下控制器第6行的语法错误
1. limit(page->limit) 这个不正确,应该是limit(10)之类的。
2. 如果读取的是问号,那么可能的原因:
a. 数据库用的编码与你显示的编码不一致。
b. 保存数据的时候编码不正确。
c. php脚本文件的编码与显示编码设定不一致。
⑥ php yii框架怎么设置字体编码格式
今天在开发的时候需要将excel文件中数据导入到相关的配置文件中,我按照过去经常使用的方法,先将excel导出成csv文件,然后使用fgetcsv函数读取文件的内容,通过Yii框架中的CConfigure类导出成配置文件,然后在检查的时候发现导出的数组中有些值中间有一些多余的反斜杠,这些反斜杠一般出现在繁体中文或者日文的文字中。
一开始我先检查了csv和excel文件中的字段,发现并没有什么问题,之后我查看了CConfigure类中的saveAsString函数,发现他使用了php中的var_export函数来实现导入配置文件的功能,然后,我又使用var_export输出会出现问题的某个字段,发现确实在字符串中添加了反斜杠,而我直接使用echo或者var_mp输出时,则没有这个情况发生,这个时候我明白问题是出在var_export这个函数上。
在查阅了相关的资料后我发现var_export这个函数会自动转义,也许是这个原因导致了字符串中自动添加了反斜杠,可是字符串本身并没有特殊字符,为什么var_export还是会添加反斜杠,这个让我百思不得其解,我查看了出现问题的字符串的2进制编码,发现出现反斜杠的地方本身的单个字符的ascii码也是反斜杠,也就是说可能是var_export在转义时针对单个反斜杠字符进行了转义?这个原因我最后也没有搞明白。
不过在我不知道如何解决这个问题的时候,我突然想到我的csv的文字编码是gbk的,因为是通过excel直接转的格式,然后我导出的文件编码是utf-8的格式,同时我的代码本身也是utf-8的格式,虽然我最后通过格式转换,成功把gbk的字符串转换成utf-8导出,但是在转换的过程中可能会出现问题(当时想的是这样,不过之后考虑了一下,因为之前在gbk格式下使用var_export已经出现了问题,因此应该不是转换过程中的问题,应该是var_export处理gbk格式的汉字字符串时产生的bug?),于是我将csv文件全部转换成utf-8格式,重新导入文件,成功解决。
其实在解决的过程中,很早就想到可能是编码的问题,但是一直没有发现excel转换的csv文件的格式问题,因为之前导出的配置文件没有汉字,因此没有出现过这一类的问题,于是就忽略了,不过最后虽然解决了问题,但是问题本身的原因还是不明,推测极有可能是因为gbk编码和var_export的兼容导致的问题,果然开发中应该还是尽量使用utf-8统一编码,应该会减少很多不明的错误。
2013.1.19更新:经过思考,觉得应该是对于gbk编码的字符串使用var_export时,函数对于单个字符表示为反斜杠的字符添加了反斜杠的转义,因此使得该处的字符变为两个反斜杠,同时因为在显示时使用了gbk编码,导致添加的反斜杠作为前一个汉字字符的一部分被显示,而原来的反斜杠字符则单独显示了出来。
⑦ phpstorm怎样配置上传代码到coding
删除文件可以使用unlink,没有必要将目录转换成绝对路径,如果想删除images中的文件,可以直接unlink("/image/文件名")即可~!
如果楼主还不清楚,楼主自己去后盾人自学一下吧
⑧ coding 怎么部署thinkphp的演示
我觉得第一步必须已经部署好了php的基本开发环境,然后去thinkphp官网下载thinkphp,小编在此处用的是3.1.2版本的。将下载的压缩包解压。
在配置好的php环境的www目录下新建开发的项目,小编在此处新建test文件夹,将解压的Thinkphp复制到test目录下。
小编现在大概讲解一下Thinkphp的基本概念,基本的目录结构就如下面的图片。大家先了解基本的部署以后,在以后的项目开发过程中逐步了解每个目录的具体含义和功能。
然后,我新建一个目录用于我们项目的开发,小编建立一个App表示我们要开发的项目。
这时候,我们需要建立一个入口文件。由于ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口。所以小编在test目录下新建一个index.php文件。这个文件就是我们的口文件。在index.php中写入如下代码:
<?php
//定义项目名称
define('APP_NAME', 'App');
//定义项目路径
define('APP_PATH', './App/');
//加载框架入文件
require './ThinkPHP/ThinkPHP.php';
这时候,在浏览器中输入我们的本地网址,就可以看到如下的内容了。至此,大功告成!同时我们可以看到App目录下增加了许多目录,那都是thinkphp自动生成的,随着我们的开发我们会慢慢熟悉,再学习它!
如果还有不懂的,可以向我一样遇见不会的在后盾人看看视频找找答案,多悠闲呀嘿嘿希望能帮到你