CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

17 May, 2022

How does this Facade works

 Programing Coderfunda     May 17, 2022     Laravel, Laravel-Question, php     No comments   

 Question : 


The bounty expires in 6 hours. Answers to this question are eligible for a +50 reputation bounty. nagidi wants to draw more attention to this question.

I'm working with Laravel 5.8 and it's an Online Store project written by other programmers.

Basically I have faced something weird that never seen before.

Let's say we have this at a Controller method:

$payment = CourseRegistrationFacade::insertCourseRegisterInformation($courseId,$date,$memberId,$userId);

And then we goto the CourseRegistrationFacade and it goes like this:

class CourseRegistrationFacade extends BaseFacade
{
    
}

So the whole class is empty but it extends another Facade which is BaseFacade and it goes like this:

class BaseFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return static::class;
    }

    protected static function shouldProxyTo($class)
    {
        app()->bind(self::getFacadeAccessor(), $class)
    }
}

And that's it !

I don't really know where the heal is insertCourseRegisterInformation !!

So if you know how this Facade works, please let me know...


Here is the full code of BaseFacade.php:

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class BaseFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return static::class;
    }

    public static function shouldProxyTo($class)
    {
        app()->bind(self::getFacadeAccessor(), $class);
    }
}


Answers


Search in the code for:

CourseRegistrationFacade::shouldProxyTo(

Most likely in the service provider that line is somewhere registering that facade to some concrete implementation of a class. Then check the contents of the class (the argument passed to shouldProxyTo).

Inside that class there should be a method called insertCourseRegisterInformation.

The way facades work is they resolve the class out of the container and then call the method you call statically.

So for example, let's say you have a UserService.php with a method register() and that class is mapped to a UserServiceFacade.php. When you do UserServiceFacade::register(), __callStatic will get the facade accessor (actual class) from the container, then call the register() method of that class.

You can understand better by inspecting __callStatic inside Facade.php.

Essentially UserServiceFacade::register() is the same as doing:

$userService = app()->make(UserService::class);

$userService->register()

By using the facade you can hide the concrete implementation and could possibly switch it to something else in the future by just changing it in a single place.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Generate Migrations from an Existing Database With the Migration Generator Package
    Laravel Migration Generator Migration Generator for Laravel is a package by Bennett Treptow to generate migrations from existing database ...
  • 'Ramayana' to have 'Baahubali'-style cliffhanger ending
    image/jpeg https://timesofindia.indiatimes.com/entertainment/hindi/bollywood/news/ramayana-to-end-on-baahubali-style-cliffhanger-director-ni...
  • How to get value of selected option in vue js
      In Vue JS, we will learn how to get text of selected option vue js on change event. i will give you simple example of get the text of the ...
  • Rule::array() and whereJsonOverlaps() for MySQL in Laravel 11.7
    --- This week, the Laravel team released v11.7, with a Rule::array() validation method, a whereJsonOverlaps() method for MySQL, a Slack...
  • Laravel Razorpay Integration | Payment gateway integration Laravel in 30 mins | Laravel Razorpay
    1 Integration of Razorpay with Laravel. In this tutorial, I have taught how to integrate payment gateway with laravel with mini-project. If...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • ►  2026 (109)
    • ►  07/26 - 08/02 (108)
    • ►  06/28 - 07/05 (1)
  • ►  2025 (4)
    • ►  07/06 - 07/13 (2)
    • ►  06/29 - 07/06 (2)
  • ►  2024 (486)
    • ►  09/15 - 09/22 (30)
    • ►  09/08 - 09/15 (35)
    • ►  09/01 - 09/08 (35)
    • ►  08/11 - 08/18 (2)
    • ►  08/04 - 08/11 (33)
    • ►  07/28 - 08/04 (30)
    • ►  07/07 - 07/14 (11)
    • ►  06/30 - 07/07 (35)
    • ►  06/23 - 06/30 (5)
    • ►  06/02 - 06/09 (31)
    • ►  05/26 - 06/02 (20)
    • ►  05/05 - 05/12 (29)
    • ►  04/28 - 05/05 (26)
    • ►  04/07 - 04/14 (10)
    • ►  03/31 - 04/07 (34)
    • ►  03/24 - 03/31 (10)
    • ►  03/03 - 03/10 (35)
    • ►  02/25 - 03/03 (15)
    • ►  02/04 - 02/11 (22)
    • ►  01/28 - 02/04 (30)
    • ►  01/07 - 01/14 (8)
  • ►  2023 (484)
    • ►  12/31 - 01/07 (35)
    • ►  12/24 - 12/31 (10)
    • ►  12/03 - 12/10 (33)
    • ►  11/26 - 12/03 (20)
    • ►  11/05 - 11/12 (35)
    • ►  10/29 - 11/05 (20)
    • ►  10/22 - 10/29 (9)
    • ►  10/15 - 10/22 (7)
    • ►  10/08 - 10/15 (9)
    • ►  10/01 - 10/08 (10)
    • ►  09/24 - 10/01 (9)
    • ►  09/17 - 09/24 (9)
    • ►  09/10 - 09/17 (7)
    • ►  09/03 - 09/10 (9)
    • ►  08/27 - 09/03 (9)
    • ►  08/20 - 08/27 (8)
    • ►  08/13 - 08/20 (8)
    • ►  08/06 - 08/13 (8)
    • ►  07/30 - 08/06 (8)
    • ►  07/23 - 07/30 (7)
    • ►  07/16 - 07/23 (8)
    • ►  07/09 - 07/16 (7)
    • ►  07/02 - 07/09 (8)
    • ►  06/25 - 07/02 (7)
    • ►  06/18 - 06/25 (7)
    • ►  06/11 - 06/18 (7)
    • ►  06/04 - 06/11 (11)
    • ►  05/28 - 06/04 (7)
    • ►  05/21 - 05/28 (8)
    • ►  05/14 - 05/21 (11)
    • ►  05/07 - 05/14 (7)
    • ►  04/30 - 05/07 (7)
    • ►  04/23 - 04/30 (8)
    • ►  04/16 - 04/23 (9)
    • ►  04/09 - 04/16 (7)
    • ►  04/02 - 04/09 (4)
    • ►  03/26 - 04/02 (21)
    • ►  03/19 - 03/26 (2)
    • ►  03/12 - 03/19 (9)
    • ►  03/05 - 03/12 (26)
    • ►  02/26 - 03/05 (25)
    • ►  01/15 - 01/22 (7)
    • ►  01/08 - 01/15 (1)
  • ▼  2022 (1037)
    • ►  12/11 - 12/18 (13)
    • ►  12/04 - 12/11 (1)
    • ►  11/27 - 12/04 (40)
    • ►  11/06 - 11/13 (1)
    • ►  10/16 - 10/23 (13)
    • ►  09/04 - 09/11 (5)
    • ►  08/21 - 08/28 (24)
    • ►  08/14 - 08/21 (24)
    • ►  07/03 - 07/10 (9)
    • ►  06/19 - 06/26 (3)
    • ►  05/29 - 06/05 (3)
    • ►  05/22 - 05/29 (3)
    • ▼  05/15 - 05/22 (109)
      • Signed Route In Larave 9
      • Laravel Backpack - File upload is not triggering m...
      • 404 Not found in Laravel when I try to make edit a...
      • Laravel 9 Localization got error Missing parameter...
      • Making ViewMenuComposer
      • SQLSTATE[42S22]: Column not found: 1054 Unknown co...
      • SQLSTATE[42S02]: Base table or view not found: 114...
      • Get current logged in user's user role from a lara...
      • Laravel time Validation
      • Laravel Nova 4 conditionally show field on preview
      • Compare two columns from two related tables using ...
      • Method Illuminate\Auth\SessionGuard::users does no...
      • Custom rule for validation laravel
      • select multiselect values from ajax resonse after ...
      • Compile Error: Cannot use positional argument afte...
      • Laravel 9 - CORS is not working (Access to XMLHttp...
      • Assigning a id+index value to a form field for man...
      • Make a file visible at view but not downloadable [...
      • Laravel- json_decode returns array but cannot echo...
      • Subdomain for Laravel Rest API not working correct...
      • Vuejs Laravel always returns validation messages i...
      • Pass dynamic controller in route in laravel
      • Laravel returns request content with response
      • Php artisan make:auth not defined in Laravel 9
      • Laravel 9 Getting error Upload Form Submit to Data...
      • Laravel Breeze API login controller errors
      • Storing attributes of a multiple models, to single...
      • Assign a default value for NULL variables properly...
      • Laravel 9 - ERROR: The body of "Symfony\Component\...
      • Laravel Desktop Notifier
      • Magento 2 Add Products To Category Programmatically
      • How to import products in category by programmatic...
      • How to Import Categories in Magento 2 Programmatic...
      • Create a function that can be used by other functions
      • File encryption in Laravel and sudo users
      • Laravel Custom Facade New Instance
      • cannot upload mp4 file manager in laravel 8 error ...
      • vlaue of checkbox to database in vue laravel
      • Resizing images of related model laravel-admin
      • Laravel excel combining multiple value into 1 cell
      • the search button is not working after I deploy
      • Send variable to terminate in middleware
      • Response_type=token in auth0 custom social login
      • Why notification event is not triggered in pusher?
      • multiple orderby sorting with pagination in larave...
      • Converting Sql query to Laravel 8 Query Showing error
      • Laravel 9 Undefined class 'MainController' once un...
      • Laravel looks to insert records in a table that do...
      • Laravel 9 on PHP 8.1 slow responses - out of the box
      • No alive nodes. All the 1 nodes seem to be down
      • How to make Laravel's dependency injection work in...
      • Laravel 9 mutators colon
      • Laravel 9: Custom login
      • Laravel 9 | Mailgun saying "Password is not set"
      • how to generate short link in laravel framework an...
      • Getting an average rating of a TV show using avera...
      • how to create favourite system in laravel with rel...
      • Laravel says application is in production but APP_...
      • Laravel validation rule for one item which can be ...
      • Unable to send file using laravel http client to t...
      • Laravel maintenance mode refresh and render parameter
      • Pusher receive the data but not in the Echo callba...
      • how to connect SQL server with php web application...
      • Laravel show my Posts, Followed user posts and Sha...
      • Show page numbers as navigation in Laravel pagination
      • Laravel collection not saving added data
      • Can't reach css files laravel-9
      • Problems in Laravel when logging in
      • How To Access A Column In M-M Relationship Table I...
      • Laravel - Is it possible to validate a get wildcar...
      • Laravel Composer could not install tymon/jwt-auth
      • redirect from the controller, depending on the rol...
      • How to get query log of events run by admins
      • Carbon generated datetime not stored correctly int...
      • Enters the if statement where it shouldn't php Lar...
      • How to print route lists in Blade
      • Can't send mail with Lumen framework and no error ...
      • Would like a php version of php 8.1 for a specific...
      • Laravel 9/Passport not working in production
      • limit the view depending on the values - Laravel -...
      • Extract Untranslated Strings from Laravel Projects
      • In Laravel 9, how to insert data into a database [...
      • Can't send mail with Lumen framework and no error ...
      • Problem at startup laravel9 system after git clone
      • I can't concatenate correctly to the source of the...
      • How to create a multi language website with Laravel 9
      • Laravel 9: change table and fields for authenticat...
      • Would like a php version of php 8.1 for a specific...
      • Laravel 9 - Passport custom api for Authorization
      • After Login/Signup, Laravel returns "419 PAGE EXPI...
      • Downloading 1000s of images using php , how to byp...
      • Order payment status check failing when waiting fo...
      • What would be a proper way to handle tokens in mon...
      • Limit of log line written to Apache Errorlog from ...
      • Filter WooCommerce products with post__in and addi...
      • WooCommerce shop loop random array function not sa...
      • Adding hreflang tags automatically in WordPress su...
      • httpful POST request: get raw HTTP message
      • How does this Facade works
      • Socialite Implementation for Laravel Jetstream
      • Bandwagon is a Social Proof Package for Laravel
      • Snappy Image Wrapper for Laravel
      • Organize Laravel Applications With Actions
      • Squire: Static Eloquent Model Library
      • OpenAPI Initializer
      • Simplifying Service Providers With Laravel Package...
      • Use Basecamp’s Hotwire in Laravel
      • Laravel Console Wizard
      • CLI to Check For PHP Security Vulnerabilities
    • ►  05/01 - 05/08 (7)
    • ►  04/24 - 05/01 (7)
    • ►  04/17 - 04/24 (64)
    • ►  04/10 - 04/17 (115)
    • ►  04/03 - 04/10 (73)
    • ►  03/27 - 04/03 (77)
    • ►  03/13 - 03/20 (2)
    • ►  03/06 - 03/13 (25)
    • ►  02/27 - 03/06 (18)
    • ►  02/20 - 02/27 (153)
    • ►  02/13 - 02/20 (187)
    • ►  01/30 - 02/06 (45)
    • ►  01/23 - 01/30 (15)
    • ►  01/16 - 01/23 (1)
  • ►  2021 (412)
    • ►  10/24 - 10/31 (2)
    • ►  07/25 - 08/01 (1)
    • ►  07/11 - 07/18 (10)
    • ►  06/13 - 06/20 (29)
    • ►  05/23 - 05/30 (1)
    • ►  05/02 - 05/09 (24)
    • ►  04/25 - 05/02 (24)
    • ►  04/18 - 04/25 (112)
    • ►  04/11 - 04/18 (1)
    • ►  04/04 - 04/11 (6)
    • ►  03/28 - 04/04 (86)
    • ►  03/21 - 03/28 (19)
    • ►  03/14 - 03/21 (2)
    • ►  03/07 - 03/14 (10)
    • ►  02/28 - 03/07 (1)
    • ►  02/21 - 02/28 (29)
    • ►  02/14 - 02/21 (13)
    • ►  02/07 - 02/14 (12)
    • ►  01/31 - 02/07 (6)
    • ►  01/17 - 01/24 (2)
    • ►  01/10 - 01/17 (8)
    • ►  01/03 - 01/10 (14)
  • ►  2020 (376)
    • ►  12/27 - 01/03 (37)
    • ►  12/20 - 12/27 (92)
    • ►  12/13 - 12/20 (29)
    • ►  12/06 - 12/13 (37)
    • ►  11/29 - 12/06 (4)
    • ►  11/15 - 11/22 (14)
    • ►  11/08 - 11/15 (8)
    • ►  11/01 - 11/08 (2)
    • ►  10/18 - 10/25 (14)
    • ►  10/11 - 10/18 (16)
    • ►  10/04 - 10/11 (10)
    • ►  09/20 - 09/27 (10)
    • ►  09/06 - 09/13 (19)
    • ►  08/30 - 09/06 (26)
    • ►  08/23 - 08/30 (4)
    • ►  08/16 - 08/23 (2)
    • ►  07/12 - 07/19 (48)
    • ►  05/17 - 05/24 (2)
    • ►  01/05 - 01/12 (2)
  • ►  2019 (74)
    • ►  07/07 - 07/14 (6)
    • ►  06/16 - 06/23 (6)
    • ►  02/10 - 02/17 (17)
    • ►  01/13 - 01/20 (37)
    • ►  01/06 - 01/13 (8)
  • ►  2018 (376)
    • ►  12/30 - 01/06 (24)
    • ►  12/16 - 12/23 (8)
    • ►  12/09 - 12/16 (98)
    • ►  12/02 - 12/09 (16)
    • ►  11/18 - 11/25 (36)
    • ►  11/04 - 11/11 (18)
    • ►  10/28 - 11/04 (10)
    • ►  10/21 - 10/28 (26)
    • ►  10/14 - 10/21 (52)
    • ►  10/07 - 10/14 (4)
    • ►  09/30 - 10/07 (2)
    • ►  09/23 - 09/30 (68)
    • ►  09/16 - 09/23 (4)
    • ►  09/09 - 09/16 (4)
    • ►  08/26 - 09/02 (6)

Data Publish News

Loading...

Al Jazeera – Breaking News, World News and Video from Al Jazeera

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda