Git Product home page Git Product logo

think's Introduction

ThinkPHP 8.0

特性

  • 基于PHP8.0+重构
  • 升级PSR依赖
  • 依赖think-orm3.0版本
  • 6.0/6.1无缝升级

ThinkPHP8.0的运行环境要求PHP8.0.0+

现在开始,你可以使用官方提供的ThinkChat,让你在学习ThinkPHP的旅途中享受私人AI助理服务!

ThinkPHP生态服务由顶想云(TOPThink Cloud)提供,为生态提供专业的开发者服务和价值之选。

文档

完全开发手册

赞助

全新的赞助计划可以让你通过我们的网站、手册、欢迎页及GIT仓库获得巨大曝光,同时提升企业的品牌声誉,也更好保障ThinkPHP的可持续发展。

安装

composer create-project topthink/think tp

启动服务

cd tp
php think run

然后就可以在浏览器中访问

http://localhost:8000

如果需要更新框架使用

composer update topthink/framework

命名规范

ThinkPHP遵循PSR-2命名规范和PSR-4自动加载规范。

参与开发

直接提交PR或者Issue即可

版权信息

ThinkPHP遵循Apache2开源协议发布,并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。

ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。

更多细节参阅 LICENSE.txt

think's People

Contributors

5ini99 avatar aoiujz avatar big-dream avatar brother-simon avatar cjango avatar d1webtop avatar dongww avatar huangdijia avatar hugtale avatar jinchun avatar kinosang avatar leunggamciu avatar lilwil avatar liu21st avatar liuzhaowei55 avatar lofanmi avatar luofei614 avatar normal-coder avatar oldrind avatar pakey avatar pwf0112 avatar shuipf avatar vancels avatar vus520 avatar xiaohome avatar yangweijie avatar yunwuxin avatar zhanghangt avatar zhylninc avatar zizhilong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

think's Issues

建议

贵方 想把这个做强 这个可以理解!!

为什么不能 依赖一下 composer 的 第三方库呢 , 说实话贵方的 model 确实很弱 ,
规范可以试着依赖一下 composer,里面拥有很多超强的库!!

默认部署目录结构

www  WEB部署目录
├─composer.json   composer定义文件
├─thinkphp        框架目录
│   └─ ...
├─runtime         应用的运行时目录
├─application     应用目录
│   ├─ common
│   ├─ module
│   └─ .....
└─web 暴露对外目录
    ├─ index.php
    ├─ public 
    └─.htaccess       用于apache的重写

除了入口文件和public内容, 临时目录、框架目录及应用目录都无法直接访问. 这样的目录结构是否会更好些.

想加入新框架的编写工作,贡献自己的代码,请问如何加入和协同,有没有相关计划!

想加入新框架的编写工作,贡献自己的代码,请问如何加入和协同,有没有相关计划!
希望能尽快完成这个分支的编写,很多人等着用,但是,还需要更多人参与进来。
TP从一开始到现在,共同奉献代码这块还太有限,不是很利于发展。大家都是捡现成的用。
希望更多时间能关注一下,如果协同安排任务,让更多优秀的开发者一块加入进来,相信慢慢的会更有影响力。

配置加载问题,

module中如果没有config文件,或者config文件内容为空的时候,原有的默认配置都不能加载了
问题应该是在config::set中,避免了非法参数产生的

强烈建议TP新增单元测试。

很多时候修改了代码,没有单元测试,会导致意想不到的结果,单元测试可以保证框架的稳定性和健壮性。

请注意PSR-0和Composer

PSR0现在已经计划写进Spl了(据说下一个版本就有)。应该遵守一下。
composer…………不多说- -!

关于驼峰命名法

TP4能否不要采用驼峰命名法,驼峰命名法在linux和windows下很纠结……比如控制器中的function用了驼峰命名法,那么在URL中,linux下要准确采用驼峰名字才能访问。

建议使用mcrypt

TP的加密模块不安全,建议使用mcrypt或openssl扩展。
./thinkphp/library/org/crypt.php

空控制器问题

很喜欢tp4无后缀轻简命名方式, 但是类名不得使用保留关键字来命名, 所以定义了empty 控制器后触发访问未定义控制器时就会报如下错
syntax error, unexpected 'empty' (T_EMPTY), expecting identifier (T_STRING)
模块控制器等都去掉了层级后缀, 按照目前的规则在用户使用时可能常会遇到命名冲突.

访问index.php,提示module not exists

在Think\App.php 54行,$config是未定义的,所以没有读取到配置文件。
解决方法:
修复文件thinkphp/Library/Think/app.php这个文件.
在52处加一行代码:$config=Config::get();

我想问作者再用什么做测试

这个测试文件能不能对外公开!!!
我们看到的只有文件 ,看不到 测试过程
请公开 核心类库的测试!!!

支持php7

php7快发布了,希望 不要基于php5.4了,直接基于php7

SQL语句生成问题

SELECT * FROMuserWHEREemail= [email protected]
数据库是mysql 生成语句中的value没有没引号括起来,导致查询报错,这条语句是在哪个地方生成的?

第三方内裤无内容

很期待不知道什么时候发布,希望快点出正式版!手册还不够好 辛苦大神了 yar 类会加进去不

db/driver.php使用问题

第660行

$likeFields = $this->config['db_like_fields'];

这个配置是必须的吗?在database.php配置中没有看到,未配置出错
E_NOTICE: Undefined index: db_like_fields in '../db/driver.php'

很多函数声明和doc备注不对应

很多函数声明和doc备注不对应,比如这个:/**
* 发送HTTP请求方法,目前只支持CURL发送请求
* @param string $url 请求URL
* @param array $params 请求参数
* @param string $method 请求方法GET/POST
* @return array $data 响应数据
*/
protected function http($url, $params, $method = 'GET', $header = [], $multi = false)

TP5 模板主题问题

TP5 设置了主题模板,如果在Chrome 下清除浏览器数据后,模板主题的Cookie数据就不会再生成。重新访问也是没有模板主题数据。在Safari 下清除缓存倒不会出现该问题。【TP3.2无此情况】

CI 错误信息修正

top-think/think Job #35.2 Log

TODO:

PHP LINT

PHP_CodeSniffer

  • PHPCBF自动修复 bc1b5f7
  • PHPCBF结果审计
  • 其他问题手动修复 #83

降级 PHPCS 检查

PHP Copy/Paste Detector

  • think/thinkphp/library/org/image/driver/gd.php:137-221
    think/thinkphp/library/org/image/driver/imagick.php:115-199
  • think/thinkphp/library/org/image/driver/gd.php:275-330
    think/thinkphp/library/org/image/driver/imagick.php:270-325
  • think/thinkphp/library/org/image/driver/gd.php:401-461
    think/thinkphp/library/org/image/driver/imagick.php:423-483
  • think/thinkphp/library/org/image/driver/gd.php:523-595
    think/thinkphp/library/org/image/driver/imagick.php:566-638
  • think/thinkphp/library/org/upload/driver/qiniu/qiniu_storage.php:270-299
    think/thinkphp/library/org/upload/driver/upyun.php:119-148
  • think/thinkphp/library/think/db/driver.php:167-190
    think/thinkphp/library/think/db/driver.php:226-249
  • think/thinkphp/library/think/db/driver.php:134-386
    think/thinkphp/library/think/db/lite.php:120-372
  • think/thinkphp/library/think/db/driver.php:1177-1263
    think/thinkphp/library/think/db/lite.php:455-541
  • think/thinkphp/library/think/model.php:705-735
    think/thinkphp/library/traits/model/auto.php:28-58

降级 PHPCPD 检查

phpmd

数量太多,不在此列出

取消 PHPMD 检查

phpunit

  • 创建 bootstrap 文件
  • 创建基础功能测试

改进的模板引擎,希望能采纳

看了一下5.0版的模板引擎基本和3.2版的一样。我在3.2版的模板引擎基础上写了一个改进版,自己试用感觉还可以,如果可以的话希望5.0版能用上这个。
下面先只说一下对原引擎改进的一些功能:
1.标签的替换过程和原来有所不同。不再是递归式的把标签及中间的内容传值到方法里进行替换,而是用正则查找出标签后,由后到前(这样才不会影响前面的标签)替换模板中的标签,不管同类标签嵌套多少层,都是在一个循环中完成的,对替换的性能无影响。整体解析速度提升。
2. 兼容原来所有的标签功能和用法,已 对正则进行了优化,标签库和内置的普通标签可以使用一样的边界符,比如都用"{}",只要不重名不会相互干扰,这样这些标签就可以和html标签区分开。
3.模板支持多级继承。
4. include标签支持多层嵌套,可以传变量。如:

在Public/nav模板用[selected]得到的是[$id}被解析后的值,而在3.2版中这样的写法是不能正确得到{$id}的值的。
5.增强了.语法的应用范围
{$user.name.$group.name} 解析后是
{:substr($varname.aa, $varname.bb)} 解析后是
.语法在各个标签中都可以使用,$a.b.c这样的形式都能正确解析成$a['b']['c']
6.增加了一些新的语法
{$varname.aa ?? 'xxx'} 表示如果有设置$varname则输出$varname,否则输出'xxx'。 解析后的代码为:
{$varname?='xxx'} 表示$varname为真时才输出xxx。 解析后的代码为:
{$varname ?: 'no'} 表示如果$varname为真则输出$varname,否则输出no。解析后的代码为:
{$a==$b ? 'yes' : 'no'} 前面的表达式为真输出yes,否则输出no, 条件可以是==、===、!=、!==、>=、<=
7. 对if标签及foreach也加了一些更简洁的用法

代码是在3.2版上写的,而5.0版结构有变动,我需要整理一下才能用到提交5.0版上来。

think\db\driver.php escapeString 的问题

thinkphp\library\think\db\driver.php  LINE: 1132
Call to a member function quote() on null

escapeString方法是不是少了 
$this->initConnect();
if (!$this->_linkID) {
return $str;
}

Declaration of traits\model\Relation::_after_find() should be compatible with think\Model::_after_find(&$result)

E_STRICT: Declaration of traits\model\Relation::_after_find() should be compatible with think\Model::_after_find(&$result) in /thinkphp/library/think/model/Relation.php on line 18
E_STRICT: Declaration of traits\model\Relation::_after_select() should be compatible with think\Model::_after_select(&$resultSet) in /thinkphp/library/think/model/Relation.php on line 18
方法重写参数$options应该需要一个默认值 $options = [];

关于T()函数的建议

之前trait没有在think目录,需要手工调用T函数,现在在think目录,而且也注册了命名空间,T()函数是不是没有存在的必要了?

为何不从PHP5.5开始?

TP4 多了很多我很喜欢的特性,希望能够快速成熟起来。如果可以,我们也打算围绕TP4做一些相关的组件和模块。

不过,既然是new branch了,为何不采用更新的 PHP 5.5.x?应该到下半年的时候正好 PHP5.5 正式版也会推出了。反正 TP4 是没啥可能跑在现在国内的主流虚机上的了,不如直接用最新技术。

上传的upload.PHP

$file['hash'] = $fun($this->autoCharset($file['savepath'] . $file['savename'], 'utf-8', 'gbk'));

D方法依然很难在IDE中提示自定义的方法啊

看了下D方法,发现是用的Loader::model(),底层的实现没有太大的差别,依然是new $class($name);或者new Model($name);,这样在Zend Studio之类的IDE里面,很难提示自定义的方法,好痛苦啊。
为什么不在Model中写个获取实例的方法啊。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.