thp-web/md/learn/index.md

1.4 KiB

Welcome

Welcome to the documentation of the THP programming languague.

THP is a new programming language that compiles to PHP.

Goals

  • Bring static typing to PHP: Not just type hints, not use mixed for everything that isn't a primitive type.
  • Avoid automatic type conversion.
  • Remove the inconsistencies in the language.
  • Organize the stdlib.
  • Differentiate between Arrays, Tuples, Maps and Sets.
  • Create a consistent language.
  • Create typings for popular libraries (like TS's .d.ts).
  • Have a simple instalation and configuration (requiring just Composer).
  • Ship a fast, native binary (not written in PHP).
  • Sub 10ms watch mode.
  • Support in-place compilation.
  • Emit readable PHP code (but not meant to be edited).
  • Implement a LSP server.

Not goals

These are not aspects that THP looks to solve or implement.

  • Be what TypeScript is for JavaScript.
  • Use PHP syntax/conventions.

Philosophy

Compared to PHP

Differences

Runtime similarities

Improvements

use PDO
use Globals::Env

val (Some(dbUri) Some(dbUser) Some(dbPassword)) = (
    Env::get("DB_URI")
    Env::get("DB_USERNAME")
    Env::get("DB_PASSWORD")
)
else {
    die("All 3 db environment variables must be set.")
}

match PDO(dbUri dbUser dbPassword) {
    Ok(connection) -> { /* db operations */ }
    Err(pdoException) -> { /* handle exception */ }
}