Comments (5)
An "empty" (blank string) parameter is completely legal in HTTP, so I'm not sure how I feel about this.
For example, sending a query parameter with no value still yields a blank/empty value, as compared to a "null" value:
- Example: http://www.example.com/page?query=value&keywithnovalue
- Reference: http://www.php.net/manual/en/reserved.variables.get.php#98419
from klein.php.
Yep, you are right. Maybe adding a third parameter, "$on_empty=false"? So if you override it to true it will check for a non blank, null value.
public function param($key, $default = null, $on_empty = false)
{
// Get all of our request params
$params = $this->params();
return isset($params[$key]) ? ($on_empty && empty($params[$key]))?$default:$params[$key] : $default;
}
from klein.php.
Yea, you could do that, but having multiple optional params feels a little dirty (sometimes you can't avoid it, though), and stacking ternary's in PHP is never a good idea.
From the PHP.net manual:
Note:
It is recommended that you avoid "stacking" ternary expressions. PHP's behaviour when using more than one ternary operator within a single statement is non-obvious:
from klein.php.
Yep, I already changed it. About multiple params.. well, I prefer to have it on the function interface than checking it on my code, each time. Pasted here if someone wants to use it.
public function param($key, $default = null, $on_empty = false)
{
// Get all of our request params
$params = $this->params();
return ( (!isset($params[$key])) || ($on_empty && empty($params[$key])))?$default:$params[$key];
}
from klein.php.
Thanks for understanding! And thanks for leaving your code for someone else to run into. :)
from klein.php.
Related Issues (20)
- Broken link in README
- JSON pretty print HOT 1
- PHP warning array_flip()
- Multiple instances? HOT 1
- How could we use DI with this package HOT 1
- subroute not working HOT 5
- Klein dispatch() LockedResponseException HOT 2
- $this->PageTitle is not working HOT 2
- is it possible to create methods with parameters in $app->register HOT 1
- Question, handling a client area HOT 2
- Headers not sent if buffer length exceedes value defined in ini.output_buffering
- More concise, Laravel-style Controller@method callbacks HOT 3
- Error with SVG images HOT 2
- Support apcu without apcu_bc?
- Central callback/hook before route response is called HOT 1
- is this package still maintained? HOT 4
- Access "pathname()" method in view using $this->pathname()
- Question: how use parameter in route?
- Add more better regex's
- Second Subdirectory Routing Not Working
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from klein.php.