Version 4.0.0-beta.2

Release Date: April 4, 2019

Highlights:

  • A number of fixes & improvements, importantly for the Model and testing classes

  • Models now require a primary key

  • Generated API docs accessible at https://codeigniter4.github.io/api/

  • Validation rules have been enhanced

  • .htaccess beefed up

New messages:

  • Database.noPrimaryKey, forFindColumnHaveMultipleColumns, Database.forEmptyInputGiven

App changes:

  • updated app/Config/Events

  • added app/Controllers/BaseController

  • added tests/ folder for unit testing

  • added phpunit.xml.dist for unit testing configuration

The list of changed files follows, with PR numbers shown.

  • .htaccess #1900

  • app/
    • Config/
      • Events #1856

    • Controllers/
      • BaseController #1847

      • Home #1847

  • contributing/
    • README.rst #1846

    • styleguide #1872

  • contributing.md #1846

  • phpdoc.dist.xml #1872

  • system/
    • Autoloader/
      • FileLocator #1860

    • Cache/Handlers/
      • FileHandler #1895

      • MemcachedHandler #1895

      • PredisHandler #1895

      • RedisHandler #1863, #1895

      • WincacheHandler #1895

    • CLI/
      • CLI #1891, #1910

    • Commands/
      • Server/Serve #1893

      • Utilities/Routes #1859

    • Config/
      • BaseConfig #1811

      • Routes #1847, #1850

    • Database/
      • BaseBuilder $1776, #1902

      • BaseConnection #1899

      • Forge #1844, #1899

      • MigrationRunner #1860, #1865

      • MySQLi/Connection #1896

      • MySQLi/Forge #1899

      • Postgre/Builder #1902

      • Postgre/Forge #1899

      • Query #1805, #1771

      • SQLite3/Builder #1902

      • SQLite3/Forge #1899

    • Debug/
      • Toolbar/Collectors/History #1869

      • Toolbar #1897

    • Events/
      • Events #1867

    • Exceptions/
      • ModelException #1829

      • PageNotFoundException #1844

    • Files/
      • File #1809, #1854

    • Helpers/
      • date_helper #d08b68

      • form_helper #1803

      • html_helper #1803

      • number_helper #d08b68, #1803

      • security_helper #d08b68

      • text_helper #d08b68, #1803

      • url_helper #d08b68, #1803

      • xml_helper #1803

    • Honeypot/
      • Honeypot #1894

    • HTTP/
      • Header #1769

      • IncomingRequest #1831

    • Language/en/
      • Database #1829, #1861, #1902

    • Router/
      • RouteCollection #1769

      • Router #1839, #1882

    • Session/
      • Session #1769

    • Test/
      • ControllerTester #1769, #1848, #1855

      • DOMParser #1848

    • Validation/
      • FormatRules #1762, #1863

      • Rules #1791, #1814, #1818, #1862

      • Validation #1769

      • Views/list #1828

    • View/
      • Filters #1769

      • Parser #1769

      • View #1769, #1827

    • CodeIgniter #1769, #1804, #1590

    • Common #1802, #895ae0

    • ComposerScripts #1804

    • Controller #1769, #1850

    • Entity #1769, #1804

    • Model #1793, #1769, #1804, #1808, #1812, #1813, #1817, #1829, #1746, #1861

  • tests/system/
    • Cache/
      • Handlers/
        • FileHandlerTest #1796, #1895

        • MemcachedHandlerTest #1895

        • RedisHandlerTest #1895

      • CacheFactoryTest #1796

    • CLI/
      • CLITest #1910

    • Config/
      • BaseConfigTest #1811

      • ConfigTest #1811

    • Database/
      • Builder/EmptyTest #1902

      • Builder/SelectTest #1902

      • Live/ModelTest #1817, #1829, #1861

      • Live/WhereTest #1906

    • Events/
      • EventsTest #1867

    • HTTP/
      • ContentSecurityPolicyTest #1848

    • Router/
      • RouteCollectionTest #1822, #1912, #1913

    • Test/
      • ControllerTesterTest #1848, #1855

      • DOMParserTest #1848

    • Validation/
      • FormatRulesTest #1762

      • RulesTest #1791

    • View/
      • ViewTest #1827, #1836

    • ControllerTest #1850

  • user_guide_src/
    • cli/
      • cli_commands #1777

      • cli_library #1892, #1910

    • concepts/
      • services #1811

    • database/
      • examples #1794

    • dbmgmt/
      • forge #1844, #1899

      • migration #1860, #1865

    • extending/
      • basecontroller #1847

      • core_classes #1847

    • general/
      • common_functions #1802, #1895

    • helpers/
      • number_helper #d08b68

      • url_helper #1803

    • incoming/
      • routing #1908

    • libraries/
      • caching #1895

      • files #1790, #1854

      • pagination #1823

      • sessions #1843

      • validation #1814, #1828, #1862

    • models/
      • models #1817, #1820, #1829, #1746, #1861

    • outgoing/
      • view_layouts #1827

    • testing/
      • controllers #1848

PRs merged:

  • #1913 More RouteCollection tests for overwriting. Closes #1692

  • #1912 Additional RouteCollectionTests

  • #1910 Added print method to CLI library so you can print multiple times on same line

  • #1908 Add filter parameters to User Guide

  • #1906 SubQuery related test cases w.r.t #1775

  • #1902 BaseBuilder corrections

  • #1900 Update .htaccess for better security and caching

  • #1899 Database Forge correction

  • #1897 Toolbar fix w.r.t #1779

  • #1896 Mysql connection issue with SSL cert (#1219)

  • #1894 Typos fixings

  • #1893 Fix spark serve with remove escapeshellarg()

  • #1892 Add CLI background color list to the user guide

  • #1891 Allow CLI::strlen null parameter

  • #1886 Fixed issue #1880, fixed a few typos and updated code style

  • #1882 Router Changes w.r.t #1541

  • #1873-1889 Docs: move namespace declarations & add missing class docblocks

  • #1872 Docs: fix phpdoc config

  • #1871 Unmatched Cache Library get() return null

  • #1869 History::SetFiles check #1778

  • #1863 Module wise Typos changes

  • #1861 New method Find Column w.r.t. #1619

  • #1860 Migrationrunner use autoloader

  • #1867 Events should actually work with any callable now. Fixes #1835

  • #1865 MigrationRunner issue with definition resolved

  • #1862 required_with and required_without definition changes

  • #1859 Ignore callbacks in routes list

  • #1858 Typos correction in DB module

  • #1856 ensure ob_end_flush() when ob_get_level() > 0 on pre_system event

  • #1855 Fix: ControllerTester::execute. Fixes #1834

  • #1854 File::move now returns new file instance for relocated file. Fixes #1782

  • #1851 Replace old CI3 .gitignore with root CI4 version

  • #1850 Secure routable controller methods

  • #1848 Test: fix & test Test/ControllerTest, tested

  • #1847 Extend Controller to BaseController by default

  • #1846 Fix contributing links

  • #1844 Model Fix

  • #1843 Replace CI3 $this->input reference

  • #1842 Exception ‘forPageNotFound’ missing default value

  • #1839 Dont replace slashes with backslashes in the to route

  • #1836 Test: Improve ViewView coverage

  • #1831 Fix some PHPDoc comments error

  • #1829 Improve: Models now require a primary key. This is partially to keep the code …

  • #1828 Fix: Remove bootstrap styles from validation views.

  • #1827 Fix: Adding include method to View library to render view partials… views.

  • #1823 Docs: Remove legacy Bootstrap references in Pagination class

  • #1822 Test: enhance RouteCollection coverage

  • #1820 Fix: Correct sphinx errors in model.rst

  • #1819 Improve: Add apibot for API docs using phpDocumentor

  • #1818 Improve: Code improvement in exact_length Rule

  • #1817 Improve: Model setValidationMessage functions introduced

  • #895ae0 Fix: Start session whenver using the old command

  • #1814 Enhance: extended exact_length[1,3,5]

  • #1813 Fix: Model::save fix for earlier PRs

  • #1812 Test: Improve Filters coverage

  • #1811 Test: Config module coverage improved

  • #1809 Fix file move failed. Fixex #1785

  • #1808 Fix: Fix save method return value

  • #1805 Docs: Query Class Changes

  • #1804 Docs: Some Base Functional Changes

  • #1803 Docs: Some Helper Changes

  • #1802 Docs: Common function correction

  • #1796 Test: Improve Cache coverage

  • #1794 Replace nonexistent “getAffectedRows”

  • #1793 Set Model->chunk return type

  • #1791 Fix: Remove is_numeric tests in ValidationRules

  • #d08b68 Fix in ControllerTester for missing UserAgent

  • #1790 Correction of typos in documentation as mentioned in issue #1781

  • #1777 Add CLI namespace to example

  • #1776 Fix: replace only last operator in field name

  • #1771 Fix: fix typo in matchSimpleBinds

  • #1769 Correction in Methods and Spellings

  • #1762 Fix: decimal rule. shouldn’t it accept integers?

  • #1746 Improve: Update Model, to selective update created_at / updated_at field.

  • #1590 Improve: Enhance 404Override