CodeIgniter4 icon indicating copy to clipboard operation
CodeIgniter4 copied to clipboard

Dev: Project URI Parser

Open MGatner opened this issue 2 years ago • 9 comments

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

MGatner avatar Apr 28 '22 12:04 MGatner

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.

iRedds avatar May 02 '22 03:05 iRedds

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.

lonnieezell avatar May 02 '22 04:05 lonnieezell

I also don't understand what exactly "project specific" URI and "URI meta-segment transformation" are.

kenjis avatar May 02 '22 07:05 kenjis

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:

  1. Separate handling for "internal URIs" (this has been discussed lots, see project roadmap and closed PRs)
  2. The ability to use these "segment variables" like {locale} anywhere in the framework.

Does that help?

MGatner avatar May 02 '22 12:05 MGatner

In CodeIgniter context, URI has two meaning.

  1. generally speaking URI like https://codeigniter.com/controller/method
  2. The URI path after index.php like controller/method

This class handles 2, doesn't it?

kenjis avatar May 02 '22 22:05 kenjis

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.

lonnieezell avatar May 03 '22 03:05 lonnieezell

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.

kenjis avatar Feb 13 '23 12:02 kenjis

Yes, that's precisely the point. Though the intent was to handle more than just the current URL, but also routes, etc

MGatner avatar Feb 15 '23 11:02 MGatner

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..

kenjis avatar Feb 16 '23 00:02 kenjis