Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Things you should know about PHP

Things you should know about PHP

An introduction to PHP, presented to the Swansea Software Development Community (SSDC) and PHP South West.

Oliver Davies

January 12, 2023
Tweet

More Decks by Oliver Davies

Other Decks in Technology

Transcript

  1. Things to know about
    PHP
    Oliver Davies (@opdavies)
    https://oliverdavies.uk/things-about-php

    View Slide

  2. @opdavies

    View Slide

  3. elePHPants!
    @opdavies

    View Slide

  4. What is PHP?
    PHP is a popular general-purpose scripting language that is especially suited
    to web development.
    Fast, flexible and pragmatic, PHP powers everything from your blog to the
    most popular websites in the world.
    http://php.net
    @opdavies

    View Slide

  5. Personal Home Page
    @opdavies

    View Slide

  6. PHP: Hypertext Preprocessor
    (recursive acronym)
    @opdavies

    View Slide

  7. @opdavies

    View Slide

  8. @opdavies

    View Slide

  9. @opdavies

    View Slide

  10. How do I get started?
    @opdavies

    View Slide

  11. php -v
    @opdavies

    View Slide

  12. PHP 8.1.0 (cli) (built: Nov 30 2021 07:15:23) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.0, Copyright (c) Zend Technologies
    @opdavies

    View Slide

  13. vim index.php
    @opdavies

    View Slide

  14. Your first PHP file
    1 2
    3 // index.php
    @opdavies

    View Slide

  15. Your first PHP file
    1 2
    3 // index.php
    4
    5 echo 'Hello World';
    @opdavies

    View Slide

  16. php index.php
    @opdavies

    View Slide

  17. php -S localhost:8000
    @opdavies

    View Slide

  18. /app # php -S localhost:8000
    [Tue Mar 8 20:52:39 2022] PHP 8.1.0 Development Server
    (http://localhost:8000) started
    @opdavies

    View Slide

  19. @opdavies

    View Slide

  20. docker run --rm -v $PWD:/app
    -w /app php:8.1-cli-alpine
    php index.php
    @opdavies

    View Slide

  21. docker run --rm -v $PWD:/app
    -w /app php:7.4-cli-alpine
    php index.php
    @opdavies

    View Slide

  22. docker run --rm
    -v $PWD:/var/www/html -p 80:80
    php:8.1-apache
    @opdavies

    View Slide

  23. 1 2
    3 // index.php
    4
    5 function say()
    6 {
    7 echo 'Hello!';
    8 }
    @opdavies

    View Slide

  24. 1 2
    3 // index.php
    4
    5 function say($value)
    6 {
    7 echo $value;
    8 }
    @opdavies

    View Slide

  25. 1 2
    3 // index.php
    4
    5 function say(string $value): void
    6 {
    7 echo $value;
    8 }
    @opdavies

    View Slide

  26. 1 2
    3 // index.php
    4
    5 function say(string $value): string
    6 {
    7 return $value;
    8 }
    @opdavies

    View Slide

  27. 1 2
    3 // src/Person.php
    4
    5 class Person
    6 {
    7 public function say(string $value): void
    8 {
    9 echo $value;
    10 }
    11 }
    @opdavies

    View Slide

  28. 1 2
    3 // Version 1.
    4 say();
    @opdavies

    View Slide

  29. 1 2
    3 // Version 1.
    4 say();
    5
    6 // Version 2.
    7 say('something');
    @opdavies

    View Slide

  30. 1 2
    3 // Version 1.
    4 say();
    5
    6 // Version 2.
    7 say('something');
    8
    9 // Version 3.
    10 $person = new Person();
    11 $person->say('something');
    @opdavies

    View Slide

  31. Levelling Up
    Content Management Systems
    @opdavies

    View Slide

  32. These lists are not exhaustive
    @opdavies

    View Slide

  33. @opdavies

    View Slide

  34. @opdavies

    View Slide

  35. @opdavies

    View Slide

  36. @opdavies

    View Slide

  37. @opdavies

    View Slide

  38. Levelling Up
    Frameworks
    @opdavies

    View Slide

  39. @opdavies

    View Slide

  40. @opdavies

    View Slide

  41. @opdavies

    View Slide

  42. But I only need a static site
    Static site generators
    @opdavies

    View Slide

  43. @opdavies

    View Slide

  44. @opdavies

    View Slide

  45. Code reuse and collaboration
    @opdavies

    View Slide

  46. @opdavies

    View Slide

  47. @opdavies

    View Slide

  48. @opdavies

    View Slide

  49. @opdavies

    View Slide

  50. composer require
    symfony/console
    @opdavies

    View Slide

  51. {
    "require": {
    "symfony/console": "^4.2"
    }
    }
    @opdavies

    View Slide

  52. 1 2
    3 require 'vendor/autoload.php';
    @opdavies

    View Slide

  53. 1 2
    3 require 'vendor/autoload.php';
    4
    5 $app = new \Symfony\Component\Console\Application();
    6 $app->run();
    @opdavies

    View Slide

  54. 1 2
    3 require 'vendor/autoload.php';
    4
    5 use Symfony\Component\Console\Application;
    6
    7 $app = new Application();
    8 $app->run();
    @opdavies

    View Slide

  55. @opdavies

    View Slide

  56. @opdavies

    View Slide

  57. Tools
    @opdavies

    View Slide

  58. @opdavies

    View Slide

  59. @opdavies

    View Slide

  60. @opdavies

    View Slide

  61. @opdavies

    View Slide

  62. @opdavies

    View Slide

  63. 1 2
    3 // PHPUnit.
    4
    5 use App\Email;
    6
    7 final class EmailTest extends TestCase
    8 {
    9 public function testCanBeCreatedFromValidEmailAddress(): void
    10 {
    11 $this->assertInstanceOf(
    12 Email::class,
    13 Email::fromString('[email protected]')
    14 );
    15 }
    16 }
    @opdavies

    View Slide

  64. 1 2
    3 // Pest.
    4
    5 use App\Email;
    6
    7 it('can be created from a valid email address', function () {
    8 expect(Email::fromString('[email protected]'))
    9 ->toBeInstanceOf(Email::class);
    10 });
    @opdavies

    View Slide

  65. @opdavies

    View Slide

  66. Feature: ls
    In order to see the directory structure
    As a UNIX user
    I need to be able to list the current directory's contents
    Scenario: List 2 files in a directory
    Given I am in a directory "test"
    And I have a file named "foo"
    And I have a file named "bar"
    When I run "ls"
    Then I should get:
    """
    bar
    foo
    """
    @opdavies

    View Slide

  67. @opdavies

    View Slide

  68. Learning
    @opdavies

    View Slide

  69. @opdavies

    View Slide

  70. @opdavies

    View Slide

  71. @opdavies

    View Slide

  72. @opdavies

    View Slide

  73. @opdavies

    View Slide

  74. @opdavies

    View Slide

  75. @opdavies

    View Slide

  76. The Community
    @opdavies

    View Slide

  77. @opdavies

    View Slide

  78. @opdavies

    View Slide

  79. @opdavies

    View Slide

  80. Things you should know about PHP
    • Very easy to get started
    • A large choice of tools and frameworks
    • A great worldwide community
    • Great learning resources
    • Gain experience by contributing to open source projects
    @opdavies

    View Slide

  81. Thanks!
    References:
    • https://www.oliverdavies.uk/things-about-php
    Me:
    • https://www.oliverdavies.uk
    @opdavies

    View Slide