In recent years, I believe many developers have heard of thinkphp (hereinafter referred to as TP) and Laravel (hereinafter referred to as L). The similarities between these two frameworks have caused controversy. There have been claims that TP plagiarized L, and TP's founder has responded. So, did TP really plagiarize L? This article will explore this.
First, we need to understand the history of TP and L. TP is an open source PHP framework. It was launched in 2006 and has a history of fifteen years. It is one of the most widely used PHP frameworks in China. L is a modern PHP framework, launched in 2011, initiated and maintained by Taylor Otwell. It has become one of the most widely used PHP frameworks in the world.
Some people believe that the similarity between TP and L is because TP plagiarized L. However, from a technical perspective, the implementation methods and focus of the two frameworks are different. TP focuses on efficiency and ease of use of application development, while L focuses more on scalability and maintainability.
At the same time, there are also differences between TP and L. For example, TP uses array-based configuration, while L uses file-based configuration; TP uses unique rules for form validation, while L uses a more flexible validation mechanism. In addition, the naming conventions and code management methods of the two frameworks are also different.
Luo Yonghao, the founder of TP, said in an interview that TP did not copy L, but was inspired by it and designed and improved it based on its own practical experience. Luo Yonghao also said that as an open source project, TP’s code is open and anyone can modify and improve it. TP developers are also constantly improving the TP framework to make it more suitable for their own needs.
Also, even if TP was indeed inspired by L, it wouldn't be a sin. Many software and frameworks are inspired by other projects, which is a normal phenomenon in the development of software. Importantly, both TP and L are continuously developed and improved based on their own technical capabilities and development concepts. This is also the spirit of the open source community.
In short, the similarity between TP and L is that both are open source PHP frameworks, which are continuously developed and improved based on their own development concepts and technical capabilities. While TP may have been inspired by L, that doesn't mean TP copied L. On the contrary, this is a common phenomenon in the open source community, and it is also an important sign of continuous inspiration and continuous progress in the development process of software.
The above is the detailed content of Is thinkphp copied from laravel?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

InLaravel,policiesorganizeauthorizationlogicformodelactions.1.Policiesareclasseswithmethodslikeview,create,update,anddeletethatreturntrueorfalsebasedonuserpermissions.2.Toregisterapolicy,mapthemodeltoitspolicyinthe$policiesarrayofAuthServiceProvider.

Yes,youcaninstallLaravelonanyoperatingsystembyfollowingthesesteps:1.InstallPHPandrequiredextensionslikembstring,openssl,andxmlusingtoolslikeXAMPPonWindows,HomebrewonmacOS,oraptonLinux;2.InstallComposer,usinganinstalleronWindowsorterminalcommandsonmac

The main role of the controller in Laravel is to process HTTP requests and return responses to keep the code neat and maintainable. By concentrating the relevant request logic into a class, the controller makes the routing file simpler, such as putting user profile display, editing and deletion operations in different methods of UserController. The creation of a controller can be implemented through the Artisan command phpartisanmake:controllerUserController, while the resource controller is generated using the --resource option, covering methods for standard CRUD operations. Then you need to bind the controller in the route, such as Route::get('/user/{id

Laravel allows custom authentication views and logic by overriding the default stub and controller. 1. To customize the authentication view, use the command phpartisanvendor:publish-tag=laravel-auth to copy the default Blade template to the resources/views/auth directory and modify it, such as adding the "Terms of Service" check box. 2. To modify the authentication logic, you need to adjust the methods in RegisterController, LoginController and ResetPasswordController, such as updating the validator() method to verify the added field, or rewriting r

Laravelprovidesrobusttoolsforvalidatingformdata.1.Basicvalidationcanbedoneusingthevalidate()methodincontrollers,ensuringfieldsmeetcriterialikerequired,maxlength,oruniquevalues.2.Forcomplexscenarios,formrequestsencapsulatevalidationlogicintodedicatedc

InLaravelBladetemplates,use{{{...}}}todisplayrawHTML.Bladeescapescontentwithin{{...}}usinghtmlspecialchars()topreventXSSattacks.However,triplebracesbypassescaping,renderingHTMLas-is.Thisshouldbeusedsparinglyandonlywithfullytrusteddata.Acceptablecases

Selectingonlyneededcolumnsimprovesperformancebyreducingresourceusage.1.Fetchingallcolumnsincreasesmemory,network,andprocessingoverhead.2.Unnecessarydataretrievalpreventseffectiveindexuse,raisesdiskI/O,andslowsqueryexecution.3.Tooptimize,identifyrequi

TomockdependencieseffectivelyinLaravel,usedependencyinjectionforservices,shouldReceive()forfacades,andMockeryforcomplexcases.1.Forinjectedservices,use$this->instance()toreplacetherealclasswithamock.2.ForfacadeslikeMailorCache,useshouldReceive()tod
