{"id":35826,"date":"2021-08-20T12:44:24","date_gmt":"2021-08-20T09:44:24","guid":{"rendered":"https:\/\/orbitsoft.com\/blog\/?p=35826"},"modified":"2023-06-29T13:17:22","modified_gmt":"2023-06-29T10:17:22","slug":"choosing-php-framework","status":"publish","type":"post","link":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/","title":{"rendered":"Which PHP Framework to choose"},"content":{"rendered":"\n<p>We can make applications in pure PHP, but we often use frameworks. Any framework can be used to solve a customer&#8217;s problems &#8211; the main thing is to use it correctly. The answers to the following questions will help you choose the best way to work:<\/p>\n\n\n\n<ul>\n<li>What functionality will help cover the project&#8217;s needs?<\/li>\n\n\n\n<li>Can the framework handle growing projects?<\/li>\n\n\n\n<li>Will it be easy to integrate contractor functionality into a project on this framework, e.g., banking software for retail projects?<\/li>\n\n\n\n<li>How much will it cost to maintain a project written on this framework? Is it easy to find developers? Do you need a license to use it?<\/li>\n\n\n\n<li>Is there a development community to ask questions when they arise?<\/li>\n<\/ul>\n\n\n\n<p>You can contact us for a consultation, and we\u2019ll help you figure out which framework is right for your project. In this article we\u2019ll analyze the assorted different features of Laravel, Symfony, and CodeIgniter, and tell you what projects we use them for.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Z1gH0Q5\"><h2 class=\"article__h\">Features of PHP frameworks <\/h2><\/div>\n\n\n<p>Symfony, Laravel, and CodeIgniter are suitable for building websites, providing a full development cycle. They have open-source code, which can be found on GitHub, and development communities. If developers have questions about what to do in a given situation, they can quickly find the answer.<\/p>\n\n\n\n<p>In the following table we take a look at the various features of these frameworks:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>PHP framework Characteristics<\/strong><\/td><td><strong>Symfony<\/strong><\/td><td><strong>Laravel<\/strong><\/td><td><strong>CodeIgniter<\/strong><\/td><\/tr><tr><td>Templating<\/td><td>Twig &#8211; allows you to write clean code and extends the capabilities of PHP<\/td><td>Blade &#8211; allows you to use PHP code in views<\/td><td>No templates<\/td><\/tr><tr><td>Modularity<\/td><td>Modular framework<\/td><td>No modular approach<\/td><td>No modular approach<\/td><\/tr><tr><td>Installing<\/td><td>Composer<\/td><td>Composer<\/td><td>Composer for latest version<\/td><\/tr><tr><td>Web application development speed<\/td><td>Quick. It&#8217;s not that easy to learn, but it&#8217;s affordable.<\/td><td>Very fast: a lot of information on the framework<\/td><td>Medium: CodeIgniter developers need to be found<\/td><\/tr><tr><td>Database support<\/td><td>Microsoft MongoDB My SQL PostgreSQL Redis SQLite<\/td><td>Apache Jackrabbit Couch DB DynamoDB GraphDB MemBase MemCacheD Microsoft BI MongoDB No SQL PostgreSQL Oracle<\/td><td>Microsoft SQL MongoDB My SQL Oracle Windows ODBC Driver PostgreSQL SQLite2<\/td><\/tr><tr><td>Functionality<\/td><td>3,000 extensions<\/td><td>9,000 extensions<\/td><td>2,500 extensions<\/td><\/tr><tr><td>Features<\/td><td>There are LTS versions of the framework <br>Out of the box functionality <br>It\u2019s the most stable framework <br>There are ready-to-use components which allow the use of a modular approach when creating applications<\/td><td>There is a built-in Composer batch manager <br>Out of the box support for unit testing <br>Large number of packages for extending functionality<\/td><td>Allows you to modify the system for new functions <br>Most functions can be redefined and extended thanks to classes <br>Works with .po\/.mo file formats for system localization<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-ece8q\"><h2 class=\"article__h\">The projects where we use Symfony, Laravel, and CodeIgniter: <\/h2><\/div>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>PHP framework<\/strong><\/td><td><strong>Project<\/strong><\/td><td><strong>Tasks<\/strong><\/td><td><strong>Results<\/strong><\/td><\/tr><tr><td>Laravel<\/td><td>Car insurance service<\/td><td>Variable data analysis for policy matching <br>Storing data on completed policies <br>Mailing with a reminder to purchase a policy <br>Different roles for work in the personal cabinet<\/td><td>16,000 personal user accounts <br>1,600 policies sold per day<\/td><\/tr><tr><td>CodeIgniter<\/td><td>Large content provider<\/td><td>Working with user panels <br>Interaction with databases <br>Maintaining the service in 30 languages<\/td><td>350,000 users daily <br>700,000 requests per day<\/td><\/tr><tr><td>Symfony<\/td><td>Accounting system<\/td><td>Integration with cash registers, terminals, bar codes <br>Order processing <br>Storing of data regarding customers and orders <br>Processing and calculation of sales statistics<\/td><td>1,200 personal user accounts <br>2.3 billion requests per year<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Laravel for car insurance selection service.<\/strong> We use Laravel for the car insurance selection service: it compares the costs of policies from different insurance companies, and offers the client comprehensive and liability insurance at the best prices. They sell up to 4,000 policies a day, earning revenue from commissions from insurance companies.<\/p>\n\n\n<div class=\"wp-block-lazyblock-link-text lazyblock-link-text-Za8XvB\">      <aside class=\"article-aside js-article-aside_under\">\n    <div class=\"article-aside__body\">\n                            <a href=\"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-the-help-of-laravel\/\" class=\"article-aside__link\" rel=\"nofollow\">\n                                              <span class=\"article-aside__txt\">\n                      <span>An article on using Laravel<\/span>\n                  <\/span>\n                        <\/a>\n        <\/div>\n<\/aside><\/div>\n\n\n<p><strong>Business tasks a PHP framework helps solve:<\/strong><\/p>\n\n\n\n<ul>\n<li>Data analysis for policy matching<\/li>\n\n\n\n<li>Storing data on completed policies<\/li>\n\n\n\n<li>Mailing reminders to purchase a policy<\/li>\n\n\n\n<li>Restricting access &#8211; creating different roles for working in personal accounts<\/li>\n<\/ul>\n\n\n\n<p><strong>Laravel task example. <\/strong>The framework optimizes the writing of new routes &#8211; matching program code and URLs.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-Z1l8hRi\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/route1-1.png\" alt=\"\">\n    <\/div>\n                <figcaption>This is an example of code for creating a route to get data. When you access the specified site address, controller functions will be called that will perform operations, and return either data or a web page with markup in response.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>Symfony for accounting and control system in flower business. <\/strong>We use Symfony for an accounting system used in the floriculture business: it helps control purchases, manage sales, and oversee questions and\/or issues with employees. The system has more than 1,200 users. It receives revenue from subscriptions.<\/p>\n\n\n<div class=\"wp-block-lazyblock-link-text lazyblock-link-text-Z1RIqNi\">      <aside class=\"article-aside js-article-aside_under\">\n    <div class=\"article-aside__body\">\n                            <a href=\"https:\/\/orbitsoft.com\/blog\/symfony-why-we-chose-this-framework-for-the-posiflora-accounting-system\/\" class=\"article-aside__link\" rel=\"nofollow\">\n                                              <span class=\"article-aside__txt\">\n                      <span>Symfony application article<\/span>\n                  <\/span>\n                        <\/a>\n        <\/div>\n<\/aside><\/div>\n\n\n<p><strong>Business tasks a PHP framework helps solve:<\/strong><\/p>\n\n\n\n<ul>\n<li>Integration with cash registers, terminals, and barcodes<\/li>\n\n\n\n<li>Order processing<\/li>\n\n\n\n<li>Storing customer and order data<\/li>\n\n\n\n<li>Processing and accounting of sales statistics<\/li>\n<\/ul>\n\n\n\n<p><strong>An example of a Symfony task.<\/strong> A developer doesn\u2019t need to write a lot of code in order to connect new functions to the system. Symfony doesn&#8217;t copy when creating new components; it remains a single framework thanks to a clean and simple functional core.<\/p>\n\n\n\n<p>An example of installing and configuring an additional component for an application:<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-1El0Mb\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/route2.png\" alt=\"\">\n    <\/div>\n                <figcaption>Once the dependencies are set, the commands in the next section of the composer.json file will be automatically executed. For example, cache: clear &#8211; to clear the file cache of the application.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>CodeIgniter for a large content provider.<\/strong> We use CodeIgniter for projects from a large Canadian content provider: they receive revenue from commissions for showing ads. The system has more than 350 thousand users and processes up to 700 thousand requests per day.<\/p>\n\n\n<div class=\"wp-block-lazyblock-link-text lazyblock-link-text-ZVDjR6\">      <aside class=\"article-aside js-article-aside_under\">\n    <div class=\"article-aside__body\">\n                            <a href=\"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/\" class=\"article-aside__link\" rel=\"nofollow\">\n                                              <span class=\"article-aside__txt\">\n                      <span> Article about Codeigniter<\/span>\n                  <\/span>\n                        <\/a>\n        <\/div>\n<\/aside><\/div>\n\n\n<p><strong>Business tasks a PHP framework helps solve:<\/strong><\/p>\n\n\n\n<ul>\n<li>Work with user panels<\/li>\n\n\n\n<li>Interaction with databases<\/li>\n\n\n\n<li>Maintaining the service in 30 languages<\/li>\n<\/ul>\n\n\n\n<p><strong>An example of a task on CodeIgniter. <\/strong>Protect against sudden service crash for users. Before launching an updated version of the service on users&#8217; computers, developers test it in a special environment. There\u2019s a chance that a developer could make a mistake and accidentally launch an unfinished version of the service into battle instead of testing.  In such a case, the service is likely to crash and not work for users.<\/p>\n\n\n\n<p>CodeIgniter has a utility called phing: it generates system settings depending on the environment, and eliminates the error of starting incorrectly. For example, you can create several environment settings which contain addresses for connections to the database, Aerospike, and Redis. By selecting the environment, you can quickly generate the necessary configuration files based on a template, instead of manually prescribing all the data.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-2cmVf8\"><figure class=\"article__figure \">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/route3.png\" alt=\"\">\n    <\/div>\n                <figcaption>The command to create databases is called from a special package &#8220;init&#8221; &#8211; actions performed during the initialization phase of the system. The name is purely symbolic, for convenience.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-banner lazyblock-banner-b0owK\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\"> We release projects for online and offline business<\/h2>\n        <div class=\"banner__content\">\n            <p><strong>We work with businesses of any scale.<\/strong> Our clients include international companies, large and medium-sized businesses, and startups.<\/p>\n<p><strong>Telecom<\/strong>: cellular operators, Internet service providers.<\/p>\n<p><strong>Finance<\/strong>: electronic payment systems, insurance companies and brokers.<\/p>\n<p><strong>Retail<\/strong>: stores, trade networks.<\/p>\n<p><strong>Internet advertising<\/strong>: advertising agencies, advertising networks.<\/p>\n<p><strong>Medicine<\/strong>: clinics, medical services.<\/p>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Discuss or order development                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/friendship.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>We can make applications in pure PHP, but we often use frameworks. Any framework can be used to solve a customer&#8217;s problems &#8211; the main thing is to use it correctly. The answers to the following questions will help you choose the best way to work: You can contact us for a consultation, and we\u2019ll [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":35837,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[195],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Which PHP Framework to choose - OrbitSoft Blog<\/title>\n<meta name=\"description\" content=\"Laravel, Symfony, and CodeIgniter: what features do they have and for which projects each of the PHP framework is suitable\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Which PHP Framework to choose - OrbitSoft Blog\" \/>\n<meta name=\"twitter:description\" content=\"Laravel, Symfony, and CodeIgniter: what features do they have and for which projects each of the PHP framework is suitable\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/1029x1002-2-768x748-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:site\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Which PHP Framework to choose - OrbitSoft Blog","description":"Laravel, Symfony, and CodeIgniter: what features do they have and for which projects each of the PHP framework is suitable","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/","twitter_card":"summary_large_image","twitter_title":"Which PHP Framework to choose - OrbitSoft Blog","twitter_description":"Laravel, Symfony, and CodeIgniter: what features do they have and for which projects each of the PHP framework is suitable","twitter_image":"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/1029x1002-2-768x748-1.jpg","twitter_creator":"@orbitsoft","twitter_site":"@orbitsoft","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/","url":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/","name":"Which PHP Framework to choose - OrbitSoft Blog","isPartOf":{"@id":"https:\/\/orbitsoft.com\/blog\/#website"},"datePublished":"2021-08-20T09:44:24+00:00","dateModified":"2023-06-29T10:17:22+00:00","author":{"@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b"},"description":"Laravel, Symfony, and CodeIgniter: what features do they have and for which projects each of the PHP framework is suitable","breadcrumb":{"@id":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orbitsoft.com\/blog\/choosing-php-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/orbitsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Which PHP Framework to choose"}]},{"@type":"WebSite","@id":"https:\/\/orbitsoft.com\/blog\/#website","url":"https:\/\/orbitsoft.com\/blog\/","name":"OrbitSoft Blog","description":"Discover the latest in news and resources for OrbitSoft","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orbitsoft.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/orbitsoft.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35826"}],"collection":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=35826"}],"version-history":[{"count":12,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35826\/revisions"}],"predecessor-version":[{"id":36585,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35826\/revisions\/36585"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media\/35837"}],"wp:attachment":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=35826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=35826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=35826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}