Skip to content

PhpGt/Input

Repository files navigation

Encapsulated and type-safe user input.

By default, PHP stores all user input in global arrays ($_GET, $_POST, and $_FILES) available for reading and modification in any code, including third party libraries.

This library wraps user input in objects that promote encapsulation, allowing functions to be passed only the user input they require, rather than having unmitigated read/write access to everything.

Type-safe functions allow more predictable functionality, such as $input->getFileUpload("photo"), $input->getDateTime("date-of-birth"), and $input->getMultipleString("pizza-topping").


PHP.Gt/Input build status PHP.Gt/Input code quality PHP.Gt/Input code coverage PHP.Gt/Input latest release PHP.G/Input documentation

Example usage

<form method="post">
	<h1>User Profile</h1>
	<label>
		<span>Your name</span>
		<input name="name" placeholder="e.g. Eugene Kaspersky" required />	
	</label>

	<label>
		<span>Age</span>
		<input type="number" name="age" />
	</label>
	
	<label>
		<span>Interests</span>
		<select name="interest[]" multiple>
			<option>Mathematics</option>
			<option>Cryptography</option>
			<option>Information Security</option>
			<option>Cyberwarfare</option>
		</select>
	</label>
	
	<label>
		<span>Photo</span>
		<input name="photo" type="file" />
	</label>
	
	<button name="do" value="save">Save profile</button>
</form>
<?php
$profile->update(
	$profileId,
// Use type-safe getters to help write maintainable code.
	$input->getString("name"),
	$input->getInt("age"),
);

// Handle multiple values with type safety.
foreach($input->getMultipleString("interest") as $interest) {
	$profile->addInterest($interest);
}

// Handle file uploads with a FileUpload object.
$photoUpload = $input->getFile("photo");
if($photoUpload instanceof FailedFileUpload) {
	// Handle a failed upload here.
}

$photoUpload->moveTo("data/upload/$profileId.jpg");

Features at a glance

  • Type-safe getters, implementing the TypeSafeGetter interface.
  • Typed multiple getters, for working with checkboxes, multi-select elements or multiple file uploads.
  • "do" callback functions - hook up callbacks to button presses (implemented automatically in WebEngine applications).
  • "when" triggers - execute callbacks when certain user input is present.
  • FileUploadInputData class for easy file uploads, including functions such as moveTo(), getOriginalName(), etc.
  • Coming soon: working with huge files by streaming them to PHP, efficiently managing memory in the process.