CodeIgniter4
CodeIgniter4 copied to clipboard
Dev: Project URI Parser
We have a lot of places where values can be interpolated into a (project) URI. There are also some places that it would be good to add support for such URIs.
I would like to add a new class that handles these centrally, probably a child of URI and maybe merged with the idea of a “project-specific” URI class.
See also: https://github.com/codeigniter4/CodeIgniter4/issues/5923#issuecomment-1110962160
Why do we need a new class if the URI class is already designed to parse the url?
Just add a URI::is($uri)
method that will check for a match.
I would agree that I'm not a fan of creating another URI class. I feel that could be confusing. Granted, I'm also a little confused on what you mean by "project specific" URI class.
I also don't understand what exactly "project specific" URI and "URI meta-segment transformation" are.
So clearly I haven't explained this well 😅 Maybe "parse" isn't the right word: translate? interpret?
So within Router we have the ability to define a URI like {locale}/foo/bar
- this is understood as "a URI within this project using the current locale". What I would like is two parts:
- Separate handling for "internal URIs" (this has been discussed lots, see project roadmap and closed PRs)
- The ability to use these "segment variables" like
{locale}
anywhere in the framework.
Does that help?
In CodeIgniter context, URI has two meaning.
- generally speaking URI like
https://codeigniter.com/controller/method
- The URI path after
index.php
likecontroller/method
This class handles 2, doesn't it?
Why does this need a new class? Can't we add placeholder support to the existing URI class and use that? I would expect that info to be available on the one that the IncomingRequest class has.
I don't know if this is the same as Project URI Parser, but I have come to the view that it would be better to have SiteURL
class that extends the URI
class representing the site (current) URL.
Yes, that's precisely the point. Though the intent was to handle more than just the current URL, but also routes, etc
Yes, {locale}/foo/bar
is kind of URI path in the project, and it is corresponding to the real route path en/foo/bar
.
However, I don't know how SiteURI relates to this route or Routing classes..