Inf / PHP

PHP

PHP (recursive acronym for PHP: Hypertext Preprocessor)

Meine php Beispiele sind unter der hompage unter inf/php abgelegt - dann kann man über apache2 drauf zugreifen Inf:php/e01Hello.php

  • Fehler Ouptut in Browser: /etc/php/7.2/apache2/php.ini ==> display_errors = On

Intro

  • php läuf auf dem Server, z.B. Apache und die sourcefiles sind eine Mischung von html und php: Inf:php/e01Hello.php. Man kann auch mitten in einem php statement zurück ins html springen (z.B. für if else). Strings gibts mit Apostroph oder quote, StringKonkatinierung mit Punkt.
  • PHP ist nahtlos integriert mit html Forms, man kann ein php script als action der Form angeben: Inf:php/e02Form.htm mit der Action Inf:php/e02Action.php, die aufgerufen wird, wenn man die Form submitted. Die Funktion htmlspecialchars übersetzt HTML-Spezialzeichen in die entsprechende Symbole etc.
  • Noch einfacher wirds, wenn man die Form und die Action inselbe php versort: Inf:php/e03Form.php. Und mit diesem kleinen Ding kann ich schon die perl like regular expressions ausprobieren. Fehlermeldungen, wegen ungültigen Argumenten der Funktionen, landen direkt im HTML.
  • regExpression mit /e evaluieren den replace text als php, z.B.
    • preg_replace('/^(.*)$/e, ' . preg_replace(array('/a/', '/b/'), array('A', 'B'), '$1') . ', 'abc abc aabbccabc')
    • übersetzt alle a und b auf Grossbuchstaben
  • der assoziative array $_GET enthält die url parameter: Inf:php/e05GetServer.php?parameter eins&pZwei=value of parm 2&drittens&vier=4.Schluss und $_SERVER enthält weitere Infos
  • damit kann man z.B. Directories und Files anzeigen Inf:php/dir.php?.
  • php hat viele Optionen und Erweiterungen Inf:php/e07phpinfo.php
  • eine form um file zu lesen und schreiben Inf:php/e08FormReadWrite.php (mit file_get/put_contens)
  • eine form um file zu lesen und schreiben Inf:php/e08FReadWrite.php (mit fgets / fputs loop)
  • diverse language features Inf:php/e09Div.php readfile and mime types

php helper

php language

etc

Cloud

DB

weitere Beispiele ⇒ algorithms

Infos

PHP Interfaces

  • SAPI = server application programming interface (SAPI) is the direct module interface to web servers such as the Apache HTTP Server, Microsoft IIS, and Oracle iPlanet Web Server. In other words, SAPI is an application programming interface (API) provided by the web server to help other developers in extending the web server capabilities.
    • Microsoft uses the term Internet Server Application Programming Interface (ISAPI), and the defunct Netscape web server used the term Netscape Server Application Programming Interface (NSAPI) for the same purpose.[1]
    • As an example, PHP has a direct module interface called SAPI for different web servers;[2] in the case of PHP 5 and Apache 2.0 on Windows, it is provided in the form of a DLL ...
  • CGI Common Gateway Interface is an interface specification that enables web servers to execute an external program to process HTTP/S user requests. Such programs are often written in a scripting language and are commonly referred to as CGI scripts, but they may include compiled programs.A typical use case occurs when a web user submits a web form on a web page that uses CGI. The form's data is sent to the web server within an HTTP request with a URL denoting a CGI script. The web server then launches the CGI script in a new computer process, passing the form data to it. The output of the CGI script, usually in the form of HTML, is returned by the script to the Web server, and the server relays it back to the browser as its response to the browser's request.
  • CLI = Command Line Interface. The main focus of CLI SAPI is for developing shell applications with PHP

Issues

php 7 converted most Errors into throwables, that can be catched.

One exception are failed String conversions (e.g. (string) function () {}), which raises an error called fatal catchable. however ist not catchable. As reads bug 72948:

  • This case has been intentionally omitted, because throwing exceptions from string conversions is ostensibly unsafe (in practice you can simply convert the recoverable fatal to an exception using an error handler, so it's sort of a moot argument).
  • Btw, we should get rid of any references to "catchable" fatal errors (if they still exist) in favor of "recoverable" fatal errors.