大话西游免费版法宝用经验升一级要多少

    1. <form id=TuUEamabd><nobr id=TuUEamabd></nobr></form>
      <address id=TuUEamabd><nobr id=TuUEamabd><nobr id=TuUEamabd></nobr></nobr></address>

      Volt Breeze, Testing, Traits, & Inheritance

      Matt Stauffer:
      You are now listening to the Laravel Podcast.
      Hello everybody and welcome back to Laravel Podcast season six. I'm one of your hosts, Matt Stauffer, and Taylor, you want to say hi?

      Taylor Otwell:
      Hey, everybody.

      Matt Stauffer:
      That's Taylor Otwell, the man, the mystery, the legend, the founder of Laravel. And today we got a lot of topics, but the big focus of today is going to be about testing. But before we get there, there is a new release or two. I know that Pale came out with an official release, but we already talked about Pale last time, but there's also a new Breeze Stack. We talked about one last time, but could you share what's going on with Folio and the Folio functional, everything like that in the Breeze stacks if people aren't familiar with Folio?

      Taylor Otwell:
      You mean Volt?

      Matt Stauffer:
      Sorry, Volt. Yes, Volt.

      Taylor Otwell:
      Yes, Folio is cool but we mean Volt.

      Matt Stauffer:
      Yes, we mean Volt.

      Taylor Otwell:
      We released a new Breeze stack, probably our last stack for a while for Breeze. It is Livewire stack, but using the Volt functional syntax for your components. What that means is, your component logic for your Livewire components is right there in the template, and not only is it right there in the template, it has this functional style that is like if you want to define a method, you just define a closure and give the variable a name and then you can assign that to a wire click handler. If you want to define some state variables, you just call the state function and tell it the name of the variable. It's similar to the view composition API versus the view options API, what it feels like the difference between those two things. But anyway, we released a new stack for Breeze that ships with that out of the box. So that is actually a really easy way to try it out.

      Matt Stauffer:
      And when you put that announcement out, you mentioned that you can now use the Volt, if I follow you, you can use the Volt function or the Volt class-based, so at some point we switched from the traditional Livewire to the Volt class-based as the primary when in Breeze, right?

      Taylor Otwell:
      We've actually never had a true Livewire stack and breeze that was separate. That's only Jetstream.

      Matt Stauffer:
      See, I was [inaudible 00:02:10] the words of that one's mixed up.

      Taylor Otwell:
      There's so many packages now. Jetstream is still the same, but in Breeze we only have Volt Livewire options in Breeze.

      Matt Stauffer:
      Because I mixed up Folio and Volt, let's just real quick talk about. Volt, you already explained what it is, it's the new syntax, the all in one view components version of Livewire. Can you talk real quick about Folio since we haven't actually covered it extensively?

      Taylor Otwell:
      Folio is super simple. It's just a page-based routing package for Laravel. You can drop a Blade template in a pages directory and just go straight to it in your browser using some routing convention. So if the template is about-us.blade.php, you can go to myapplication.com/about-us and it renders the template. And you can do all sorts of wildcard and parameters very similar to Next.js page-based routing in Laravel.

      Matt Stauffer:
      And one of the cool things about working with Folio is because of Volt you can also do significantly more functionality in those individual pages than you would've, had we had Folio without Volt, which is why they're intertwined in my head, and you released them around the same time and everything. Volt makes Folio so much more powerful.

      Taylor Otwell:
      Yeah, exactly. I think Volt makes Folio legit useful versus just an interesting toy.

      Matt Stauffer:
      Totally. All right, let's talk about tests. We got a ton of questions about tests, but I also mentioned you earlier that I've been reading tons of code, tight in a hiring around in the last couple of weeks. I've just read just so much code from folks and they're all building the same application, but we could really see how they do it differently in this take home. And one of the things that I've noticed is that people write tests very differently. When I was looking at the queue of questions we had from people about tests, I was like, "This is really relevant to what I've been thinking at." The biggest question here has just been, what are the best practices for writing tests? And obviously that's a broad thing. And anytime someone says best practices, it goes a little bit of a yellow flag going, "Well, best practices in what context?" Or whatever.
      But one of the things I wanted to just see is we can talk through at least what helps us make the delineation in a given application between one or the other. So it's not like one way is right and one way is wrong, but more it depends kind of thing. I wanted to start at the highest level, even though Pest, which is a testing framework created by a Laravel core member, and it's now being shipped and everything like that. It's been around for a while, you can choose Pest when you're starting to do Laravel app. A lot of Laravel projects use Pest testing.
      I think a lot of people either don't know about Pest or what they know about Pest is purely just that it's that different syntax, like the if whatever type of syntax. Could you talk a little bit about test? And for anybody curious, Nuno, the creator of Pest, Laravel podcast episode from last season where he goes into much greater depth. So if you really want to get all the details of it, go there, but Taylor, could you give us a real quick rundown of what Pest offers that makes it motivating for you to offer it as a potential syntax for folks? not even syntax, but a potential test runner for Laravel apps?

      Taylor Otwell:
      Like you said, Pest removes a lot of the noise from traditional PHPUnit testing suites. You can do all of the normal things you can do in PHPUnit, but you can also do a bunch of other things. And just the overall syntax style, it feels similar to Volt where it removes a lot of the code noise and boils your test down to just simple functions that are invoked, but it has a bunch of other cool stuff. I think the way... or I don't know.
      I don't if it's really new stuff separate from PHPUnit, but it's just more ergonomic, I would say. The way you use data providers in PHPUnit is like I believe putting a comment annotation on your data provider method and blah blah blah. Whereas in Pest you might just chain on a width method or I don't remember what the method is and give it an array of data and that's your data provider. A lot of just really more developer experience focused niceties, RN tests, I think. It also includes some stuff that's kind of just not in PHPUnit. There's the architecture testing plugin where you can make sure that all of the classes in a certain directory maybe-

      Matt Stauffer:
      Have a certain-

      Taylor Otwell:
      Don't extend anything or have a certain style, have a certain suffix or whatever. I find that nice. I actually don't have a ton of experience using Pest and production projects. It's not really a first party tool that we maintain here at Laravel, it's just a very popular package that's maintained by Nuno who now happens to work at Laravel.

      Matt Stauffer:
      Yes, exactly.

      Taylor Otwell:
      And we have it as an option in our starter kits because it has become so popular in the Laravel ecosystem. Very similar to Livewire or Inertia where a package becomes so popular, it feels quasi first party at a certain point, especially when the person they're maintaining it works at Laravel. A lot of people seem to like it and I think for the developer experience of the whole thing.

      Matt Stauffer:
      And for those who don't know, Pest both has a different syntax which is similar to our spec, so it's like the whole it and then you write a nice string rather than having to give your snake case method name and then inside of closure you do your test there and that's where you're saying there's all these niceties where you're chaining things on and there's a lot less of the croft of a class or whatever, but for those who are maybe unsure about it, you can use Pest to run PHPUnit style tests and you still get the benefit of a whole bunch of additional tooling that Pest comes with, that a lot of people add to all their PHPUnit test apps anyway, like parallel testing and coverage and this custom architecture testing tool and you're talking about and stuff like that.
      There's a lot of tools that Pest brings in even if you choose to use the PHPUnit syntax, and I did not know that when I was talking to Nuno originally, I thought Pest meant the RSpec syntax and that's it. So when I learned that it's like it's building all these features on top of PHPUnit and also adds an optional syntax, I was like, "Then it makes a lot more sense just to work with it."

      Taylor Otwell:
      Yeah, snapshot testing, things like that.

      Matt Stauffer:
      Let's dig into some specifics of writing tests, whether it's in Pest or in PHPUnits. So the first question that I see come up, and it came up a lot in a lot of my interviews over the last couple of weeks is unit versus feature test. A lot of people have these very strict definitions of what a unit test is and what a feature test is. And if it's a unit test, it's not allowed to touch the database and stuff like that. And I know historically people have said a unit test is a test that tests only one thing, but what that one thing is allowed to be can be a little bit of a different definition. Is that one thing involved doing the database or not? In your mind, do you have a really strong delineation of feature versus unit test? Is it something you think about a lot?

      Taylor Otwell:
      I feel like I write... It's rare that I write something that I put in the unit test directory in a Laravel app. I just feel like that's really rare for me. It would usually be some specific... Let's imagine you had a method that performed some array manipulation to put an array in a certain structure, or some mathematical computation, like a formula. Maybe you're calculating bonus pay for a certain period for an employee and that's this specific math calculation, that feels like something that can be unit tested, that formula, and it's probably not hitting the database. But I just feel like it's so rare and the applications I build at least where I have something like that even to test. Most of my tests are feature tests, most of them hit the database in some way, most of them even hit routes in some way. Those are most of the tests I write because I just feel like that's the types of applications I'm building and they're also the tests that just give me the most confidence in the overall stability of the application.

      Matt Stauffer:
      Sometimes-

      Taylor Otwell:
      Do you find yourself writing many unit tests?

      Matt Stauffer:
      Yeah, sometimes, we built some projects recently where we don't even know what the application is going to look like yet, but we are working with a researcher or something, or an analyst who's like, "I have this magic formula that I've built in Excel." And we need to represent that magic formula and then build an interface in front of it. And so one of the things we do often is build a black box, like PHP class, that represents the formula. Because it's usually not a formula, it's usually 30 different formulas with 50 different inputs that output one or more pieces of data. And often you can put data in or out without touching a user interface, a route or anything like that. That's my most common use case for unit tests because it is actually a unit, this black box class or set of classes takes inputs, spits out outputs. Then later we'll plug it into places and then we don't have to worry quite as much that our feature tests are testing the math or the code or whatever, the math of it, it's more just testing the traditional app. Things like if you get an input it's validated or not or whatever.
      Outside of those things with a very specific nuanced core identity, or math, or calculations, or whatever, it's pretty infrequent for me. And one of the things you mentioned, like a pay structure, I have a calculator that I run that handles profit sharing for Tighten, so it calculates how much profit share everybody gets every quarter. And it is doing lots of calculations that I need to make sure it gets right, but a lot of it's based on the database.
      That's where I was like, "I guess you can call it a unit test." Because it's saying, "In this circumstance, what does this calculation run?" But I put it into my futures test directory because it requires, here's 20 people, each of whom has the last six salaries that have been at different variable and plugging the calculations and make sure that it correctly gets the latest salary for each person even if they're right in the edge of a new salary. Even those complicated calculations I'm doing with that one are still so connected to the database that it's very much feature test. The answer is not very often, but every once in a while when we've got one of those little black box calculators.

      Taylor Otwell:
      I actually just pulled up Laravel Vapor here on my end just to see what we had in our unit test directory. And one of the tests we have, it looks like a custom validation rule for valid repository name. So it's basically a string validation check and we feed a bunch of strings into it and it spits back true or false. So that's very unit testy to me. It's not hitting any database or anything like that. And it's probably helpful to clarify for people, what is actually the difference between the feature and the unit test directory in Laravel from a tech perspective? And the main difference is testing the feature directory actually boot up the framework and call all of your service providers, they bootstrap the whole Laravel app.
      Whereas testing the unit directory just extend the PHPUnit test class and they don't do any framework booting, you can still instantiate any of your classes because composer autoloader is registered, but none of your service providers have run, you can't call into the app. What does that mean? Basically it means that your unit tests boot up a little faster in terms of your test suite, because we don't have to bootstrap the whole Laravel app. Now, does it actually make a difference in your application? Probably depends on how many unit tests you have. And if you just have a few, it's negligible and not really going to make a difference. But that is the tech difference between putting something in a feature directory versus a unit directory in a Laravel context.

      Matt Stauffer:
      That's very helpful. And so the general rule here seems to be, if you are relying on your Laravel application to be booted, then it should be a feature test. And if you're not, then it shouldn't be. And that's great because that's more than just database, that's also, if it relies on any aspects of your service providers having been set up or anything like that, you can then say, "Then it's got to be in the feature test." Obviously that's a Laravel specific thing, but it's a Laravel podcast so we can talk about it that way. Sweet.

      Taylor Otwell:
      One sort of epiphany, I don't know, this is moving deeper into the testing thing-

      Matt Stauffer:
      It's fine.

      Taylor Otwell:
      ... but I think it was a big epiphany for me and my testing career so to speak, where I had this phase of testing where I was mocking everything it felt like, and injecting everything into my controllers and all of those things were mocked, and it started to feel like my tests were... I think I've tweeted before, it felt like my tests were becoming spellcheckers to make sure that the right methods on certain mocks were called, expected this method, they called in, return this, expected this method, didn't return that.
      And it's like, "What?" I'm just rewriting the method itself in my test. I'm not actually testing any behavior. And early in my career it felt like a lot of my tests looked like that because I think it depends who your influences are, but a lot of sort of testing gurus had this very mock heavy approach it felt like at the time, and that's what I learned. But as it moved further into my career, I went the opposite direction where I just barely rarely mock anything. I hit the database in every test. A very typical test for me will be hit X controller endpoint or some URL, expect that some result is returned from the controller and make sure the database looks a certain way by either querying the database or making sure the right data is in place. That's very typical. 90% of my tests look like that.
      And that just gives me so much more confidence than the old over mocked, over complicated noisy tests that really just is so brittle because every time the implementation of the method changes, you're updating your test, which is a huge code smell for me that your tests are way too brittle. If you feel like every time you update your controller in some minor way, you also have to update your tests, that's defeating the whole point of tests, which is to let us refactor with confidence without having to change our test every time.

      Matt Stauffer:
      And as you were saying that, I was just thinking, if you refactor the implementation of a particular feature without changing the input or the outputs, your tests shouldn't have to change. And if they do, that's a sign that you're too tightly coupled to-

      Taylor Otwell:
      You're too coupled to the implementation.

      Matt Stauffer:
      ... testing implementation. Absolutely. Which is interesting because when you say tight coupling, normally people are using it critically of doing something like feature tests. "Your tests are too coupled to the framework." But the problem is using these more broad feature tests, you're testing the input, you're testing the output or whatever, or you're giving input tests and the output, allows you to not be coupled to a particular implementation which allows you to write code, and rewrite code, and rewrite code without constantly rewriting your tests.

      Taylor Otwell:
      The whole point of test is to of course make sure our code is correct and does what we expect, but also to be able to refactor with confidence and you just can't do that if you have to change the test every time you refactor.

      Matt Stauffer:
      And it's super interesting because when I did the Valet 3 to Valet 4 rewrite, I was really spending a lot of time leaving the tests, and the Valet tests have to be very mock heavy because they're testing what happens when your system is in a certain state and there's no way... You can't fake the system, or fake the database, or fake the file system, whatever, without doing mocks. And it had just made me realize how much of a smell heavily mocking is, because that ended up with the Valet tests being very tightly tied to implementation and that was just a necessary evil because of Valet, but it just come and helped me realize how far we've come from when that's what all of our web application tests look like. For sure.
      One of the things you mentioned as we're going there was you'd like to test... You give a particular input to a route, you test that the response is the way you want and then you test the database afterwards. How often are you going to test the database using assertDatabaseHas versus checking the output on the page that you know reflects the status of the database?

      Taylor Otwell:
      I actually usually run database queries to make sure, and I honestly rarely use that assertDatabaseHas stuff actually. I just run a database query, expect that account is a certain number or that the right data is in place. Or I'll just, if I already have a model, I'll just call refresh on the model and make sure the data looks correct. I think because a lot of our front ends are inertia based or whatever, I'm not usually inspecting the actual HTML content so much as I'm expecting the data that's being sent back to the front end. As far as the front end, we have a suite of Dusk tests on Nova itself to make sure our front end works the way we expect. But anyway, the database check is the typical flow for me.

      Matt Stauffer:
      I like that for two reasons. One is that I think if you test the HTML, then now you're tied in this place where what if that HTML changes? Now this test that doesn't have anything to do with that HTML has to change. Whereas if you just inspect the database, you're good. And then you could have a test later that says, "Depending on the status of the database, check to make sure that the HTML is the way you want." That test can be about your output if you want, and it might be in Dusk instead.
      But the other thing is, I hadn't thought about this before, but you choosing to use a database query instead of using the assertions that are directly tied to the database means it's clearer, because it's literally the eloquent code we all deal with in a database and that should exist in that database already, but also it's going to be more connected to what the actual practical functional queries are going to be elsewhere. So if you've got scopes or anything like that, those scopes will be reflected in that query in a way they wouldn't be in the assertDatabaseHas. And so you're seeing more of a practical, what actually would come to an average eloquent query as the result of this database being the state it's in right now.

      Taylor Otwell:
      And now one area that I do, I guess you could call it mocking in a way, is like Bus Fake, Queue Fake, Mail Fake, all the Fakes in Laravel, I do use those pretty heavily. That feels like less brittle to me, and the reason why I use those is, for example, if I'm hitting a controller that queues a job, I'll call a Queue Fake to basically turn off the queue, but I can still make assertions that the job was actually dispatched, it's just not actually going to execute. Because I usually write a separate test for the queue job itself, where I'll actually create the job, call the handle method, make sure it does what it's supposed to do, query the database, again, very similar to my other tests. But I don't usually let that actually execute during the controller endpoint thing. I'll just make sure that the controller dispatch the jobs, I expect it to dispatch and write that test in a different test class.

      Matt Stauffer:
      And to me that's an output. If you say input and output, well the input is, let's say, a post to a controller, a router, something like that, the output could be the database is modified, the output could be that there's a certain HTTP response sent back to the browser, the output could be a notification was sent or job is queued or whatever. And what you want to do in that controller test or that route test is make sure that output happened. But again, like you're saying here, that doesn't mean you also then want to go test that output. And one of the things I often see in people's tests is that they accidentally end up testing Laravel's code, because they're like, "Test to make sure that this collection mapping works the way I want it to." And I'm like, Laravel has got tests for that already.
      And similarly, if you feel like when you dispatch the route, you have to test the whole way through to every single thing that queue job is going to do or every single thing that notification is going to do, you're now expanding the scope of what you're testing, which is not really necessarily... You're getting outside of the scope of what you should be testing. The route should test that the things happen and then by using Bus Fake, by using Queue Fake, by using notification fakes or whatever, you're giving yourself the ability to say, "Test that it was dispatched." And then somewhere else say, "When it's dispatched test to make sure that does this." And now they're handled separately.

      Taylor Otwell:
      I don't think we were recording yet when we mentioned this, but testing sort of... We're talking about testing the happy path right now, but you also have to test validation failures, error states, and there seems like no end to the amount of tests you can write for all of the invalid scenarios that can possibly happen. And knowing when to stop doing that I think is interesting. And I think there's tools for this, right? I think it's called... Is it mutation testing or something like that where it feeds all the sorts of random data into your test to see if it fails?

      Matt Stauffer:
      Yeah.

      Taylor Otwell:
      But anyway, I'm curious what you do there. The things I primarily test when we're trying to test failure states is security related things, like make sure that a user that doesn't own this blog post can't update this blog post, that kind of thing, make sure they can't delete this blog post. Those are the first failure tests we write, especially on something like Forge or Vapor, where we need to be very security conscious. And then on my end, I'll test basic validation errors and make sure I get the validation exceptions that I expect on the right attributes. But of course there's all sorts of other scenarios I'm sure I could test, but I don't find myself writing them. I'm curious if you do anything there, how far do you go down that path?

      Matt Stauffer:
      It's a fantastic question because I don't know, I feel like there's a part of me that thinks I should test every single thing to make sure it's validated. And sometimes I've done that, especially if it's very, very important for this client for every single piece of data to be tested the way we want. So we'll use usually data providers to make sure that each one is tested individually and each one gives the error you want. Some of the cleanest code I've seen lately tests one valid one to make sure it works and one completely invalid one, and just test to make sure it gets all the errors. And I'm like, "I don't mind that as a stop gap one." You test one that has all the data that you know is required and make sure it actually goes through, and you test one that's literally an empty array. You're posting an empty array and you test to make sure that you get every single validation error that you expect. And then hopefully you're good.
      And one of the things that does require you to do is not do any validation that's like a one-off validation that if this one's invalid, you don't even get to the others. And that's one of the things I see people do often is that they get to a very complicated validation rule, instead of writing a validation rule and putting it in the validation array, they'll do a manual check before they hit the validator. And one of the downsides of that is if that one fails, you only get that error, you don't get the other errors. So that's one of the many reasons why I think it's often worth the work of taking an extra 30 minutes to an hour of writing a custom validation rule for that weird edge case versus just doing a manual database check before we're in.
      But I completely agree with you though, no matter what I'm doing, I need to make sure, and I always tell people this, in testing, make sure that things that are going to get you fired or the things that are going to into your company in the front page of the New York Times... When I say that, you know what that means for your company, right? Test those things. And so if it is accidentally allowing somebody to charge somebody money they shouldn't or log into somebody else's security thing or whatever, test those no matter what. And then everything else flows down from there.

      Taylor Otwell:
      That makes sense.

      Matt Stauffer:
      Do you use data providers at all? It's something that I feel like I should use more than I do. And you mentioning it's easier in Pest, I'm like, "Maybe I should use pest more just so I could use data providers more."

      Taylor Otwell:
      The ergonomics of using data providers are definitely much better in Pest than in traditional PHPUnit. I wouldn't say I use them a lot, we use them more when testing Laravel itself more than I seem to use them in real applications, I think. I don't know why. Like I said, in this vapor project we had a unit test that does use a data provider, but it's definitely over 95% of our tests I'm sure do not use a data provider.

      Matt Stauffer:
      And I'm very similar in that if I'm dealing with open source code where I can imagine just all sorts of different user inputs, all sorts of different uses, I'll usually have an array of some sort that says, "Here's all the millions of different ways that could..." And then later when I get a failing test, or I get an issue or something like that, and I'm like, "You didn't cover this one string or that one string," first thing I'm going to do is going to add it to that array and then I'm going to fix the code until that thing is green. And now we know there's one more thing on the stack of things that we're covering in this code. Very, very common. In my code-

      Taylor Otwell:
      Data providers feel very tied to validation to me, validation scenarios where you need a lot of different data.

      Matt Stauffer:
      Or like you said... No, even the one you said was a check, it's validating to make sure that this thing is a valid repo. I think that's very common for me. I don't do data providers in checks that got routes against routes. I've seen people do that before where they're like, I'm going to give every single field, like we were mentioning before, every single field is going to have a failing state with all the rest of them having a passing state and I'm going to run through all of it, and I think that's overkill. And I've seen that quite a bit in the last week where I think out of abundance of caution, people will just write every single possible failure state they can possibly imagine as an individual test, and each of those tests is 10, 15 lines long. And although I understand where it comes from, it's too much. It's one of these where I don't have a hard and fast rule, but you know it when you see it and I'm like, "Sometimes there's just too many tests against the same route."

      Taylor Otwell:
      It's an interesting thing, because some people that are very dogmatic about a hundred percent test coverage over your entire code base, whereas other people I think emphasize more like, test the things that you need to test the most to gain the most confidence out of your application, test the most sensitive parts of your application the most, obviously. And then the more peripheral parts that are not as important maybe, you don't need thousands and thousands of lines of tests over those things if they're not very central to the application necessarily.

      Matt Stauffer:
      I think that's a great point. Code coverage, it's sometimes obsessed over in ways that aren't healthy. Some companies say every single poll request must increase our code coverage or we are reaching for a hundred percent code coverage. And I think that every single PR must increase our code coverage is okay if you have no code coverage and you're trying to get up to 60, or 70, or something like that. I think that 50% code coverage is good, 60 is better, seventies is better. I feel like when you're getting up with those higher numbers, you really have to obsess over things that it's one of those things where you're satisfying the machine versus the human who's actually going to work with those tests in the future. And while I do think that tests are good for covering our butts, part of what tests should also do is inform and protect and help future programmers working on the project, test this documentation. And when you're looking for a hundred percent code coverage, you're not doing that. You are making it very hard to reason with.

      Taylor Otwell:
      It's like, what does a hundred percent even mean? It almost feels like a meaningless number. It means that I guess that all of the code in the project was executed at some point during your test suite, but you don't know if it was the right test or if it tested the right thing. And it doesn't mean that all of the other invalid scenarios were also tested. It's not a helpful number in my opinion, because it doesn't really mean much, it doesn't tell you if the tests were actually good, or if they were helpful, or if they even checked the right thing at all, from a business perspective and from a security perspective or whatever. I don't know. I don't think it's a helpful thing because I don't think it means much.

      Matt Stauffer:
      Totally. And I would say that there's something to be said about relying on existing metrics for testing because we don't all know all the things that can go wrong. There's something to be said, at least looking to external things. And one of the things I remember in the first app I ever built, thankfully it wasn't public, this is in the days of CodeIgniter, where we didn't have the type of protections we have in Laravel. I had a user profile update form and the user ID that you were updating was just a hidden input, so someone could just go in view source in their browser, change that input to be two, hit post and then change it. And thankfully I talked to an older programmer, he is like, "Yeah, I just changed your password. Let's work on this." But the good news is things like that are usually... We're protected from them because of the conventions that are built in Laravel.
      A lot of the dumb things that we wouldn't know to test for because we're so junior, are really protected from, unless, this is so funny, unless you're fighting the framework, the more you fight the framework in any way, shape or form, the more you have to know everything. But the more you work with the framework's conventions, the more you can just say, "What do I need to know from a business perspective that my business cares about?" And you can trust that a lot of the potential security concerns aren't going to be there as long as you're working with eloquent, and validation, and all that kind of stuff. Once again, a pitch for people to not fight the tools, don't fight the framework, but also an idea that to me as someone who says, "The point of software is value to people in our businesses," then the validation should be validating that the bad thing doesn't happen to the business and the good thing does happen. The user doesn't have a bad experience and they do have a good experience. And those are really the things that we're checking for.
      And it should be clear. One of the reasons that people... Started rant here a little bit, but when people criticize Tailwind from a CSS perspective, they say, "There's so many classes." But the thing is, I have built many CSS based structures, I have talked about OOCSS and all these CSS based structures pre-Tailwind, and what I found in one of the reasons that I came around to Tailwind was that when I came back to a code base two years later, no matter how well I'd architected that code base originally, not only was I not fully able to follow the CSS, but other people who came along had at some point said, "I don't know where the heck this is supposed to go. I'm just going to put it in an extra CSS file." When people don't understand the existing systems, they don't work with them. They don't say, "I'm going to go learn this whole system and figure out where it should go." They just put crap in places you don't expect it to be, or where it shouldn't be. So when people can't reason with it-

      Taylor Otwell:
      This is the thing I find most ironic about the Tailwind criticism on the Twitter sphere, the X-sphere, or whatever it's called these days, is that you see people say, "Will it scale? Is it maintainable?" And the ironic thing about it is that's precisely why it's so good, is because it does scale and it is maintainable.

      Matt Stauffer:
      Yes, it is maintainable.

      Taylor Otwell:
      Unlike all these other custom CSS solutions that we've concocted.

      Matt Stauffer:
      And to me it's the same thing here with these tests. If I have a hundred percent coverage test suite that has thousands of tests, because you had to catch every single thing, I'll have no idea where to look when I add something, edit something. Now granted tests give you a little bit more than CSS does because you can see when the test fails, but still, if I don't have the ability to understand the code base of tests, then those tests now become just a hard and fast fixed thing that I can't change, I can't modify. If I write code that breaks it, I'm just going to just underwrite that code. You know what I mean? What I want is tests that I can understand all of them, I can read through them. Literally when I do code review, the test directory is the first place I go. Because in a well-written code base, the test directory is going to tell me what the thing does, what the thing is not supposed to do. That's it.
      All right. I had one last topic for us and then we're at our 30-minute mark. The last topic was traits versus inheritance. And there's other ways of talking about this topic, but one of the things that's come up often in PHP but then also in CSS and everything like that is when we're talking about final classes, which has come up a lot lately, because there's some drama about that lately. It's people who are very, very anti inheritance and very pro-mix-in, or trait, or whatever you want to call it. And the thing that I wanted to talk about is the fact that in Laravel we use both a lot. There's a lot of traits and there's a lot of inheritance, and I also know that in the past you've talked about the fact that you think that this is a little bit of different conversation in open source code versus individual application code.

      Taylor Otwell:
      Yes, a hundred percent.

      Matt Stauffer:
      Can you tell me a little bit about your thoughts about traits versus inheritance?

      Taylor Otwell:
      Yeah. I think people get the impression that we use inheritance all over the place in Laravel, which is definitely not the case. And I think I'll start in application code. I actually very rarely find myself using inheritance when writing application code and project. It's pretty unusual, I would say, that I'm ever extending a class that's also in my application. It just doesn't seem to come up much. I don't know why. Occasionally used traits, even that it's not super common, I would say, that I'm using traits, that aren't built into Laravel. I'm talking about my own traits that I write that I'm using in other classes. I think it definitely happens some, but it's not something I'm just reaching for all the time, whereas an open source code, I think inheritance is useful in certain scenarios. So the things that come to mind are very driver-based things like the cash drivers, the Q drivers, the database drivers.
      Or you have a lot of shared functionality across this driver system where you have a Redis driver and then Cache driver, and they do very similar things, and you just want to share some code between them. I think with the advent of traits, some of that extension became unnecessary, but it was already written at that point, because it was already built into Laravel. Would I use inheritance in those situations? Now if I was writing Laravel from scratch, maybe it wouldn't be necessary, I could just use a couple traits to share some helpful methods with those classes. But again, I agree that using inheritance all the time in your application code is weird, or at least it doesn't seem to come up a lot for me.
      We definitely use interfaces sometimes. For example, in Laravel Forge you can connect your account to GitHub, Bitbucket, GitLab, and those source control providers. We have an interface called source control provider, and it has methods like Git commit hash, Git repository. I don't think those extend anything, they're just an interface that we use. I don't know about you. Do you find yourself using inheritance, and I mean outside of extending eloquent model? Do you find yourself using inheritance in application code a lot?

      Matt Stauffer:
      No, and I was actually going to mention the same thing you did about interfaces. I found that a lot of times that we would be tempted to reach for inheritance it turns out an interface does the job. When I would be most likely to do it is, let's say a source control provider is technically like an interface because you want to be able to take a generic source control provider throughout your app, and every single one of these is going to have these three methods, you can build an interface for them. But what also is the case is 90% of them are going to rely on this one private method that makes it really easy to do something, or 90% of them have the exact same way of parsing a Git URL, and only 10% of them have a custom way. Then what I'll probably end up doing is do a base abstract class that's source control provider that they all extend, and then each of them, A, can rely on those private... Protected, not private, those protected methods that those base one provides, like little helpers or whatever.
      And then B, only the ones with the custom stuff are the ones that have to customize that method, but for the method that they're all sharing that same method. Again, let's say it's one that parses the Git URL or something like that, you don't even have to write that method, it can just inherit it from its parent. I know Takeout is open source, so it's not quite the same, but Takeout has the same concept of every single feature that you can install with Takeout, whether it's MySQL, or MSSQL, or whatever else, 98% of the time they have the same ways of connecting to Docker, and they have the same ways of building the string that you're using. Every once in a while there's those edge cases. So I don't want to have to... And what I could have done was say, "We've got a trait for building that."
      They all implement the same interface they build into trait, that's the way that 90% of them do it. What I've found is it's easier for my brain to reason about, "I've got one main way of doing it." And if you ever see this method in a specific implementation, that's the one that's changing it versus they've all got this trait. But that said, when it's not that circumstance, I can't tell you when we use inheritance. We do use traits. We use interfaces of reasonable amount, but I feel like the people who really pitch interfaces a lot have a bigger idea of the value of interfaces than we do, because it has to be a circumstance like that where you're like, we have multiple implications, probably going to have more in the future of a thing. And it's not that common of a use case in application code in my personal experience.

      Taylor Otwell:
      Mine either. It's just not something that seems to come up a lot or seems to make sense. But during the unfinalized drama, it felt like people had the idea that just it extends everywhere. We're just inheritance all over the place, and that's just definitely not the case.

      Matt Stauffer:
      Totally. I think that's my last one for today, but one of the things I remembered is, in the past when it was you and me and a couple other guys, podcasting, I always had a fun question at the end and I want to start bringing that back.

      Taylor Otwell:
      I forgot about that.

      Matt Stauffer:
      I know, right? And I had just remembered that I, and this is a little bit of a leading question, but that's okay, I had just seen pictures of you and your family going up to Vermont for fall, everything, and I wanted to ask you, what is your favorite season?

      Taylor Otwell:
      Gosh. Honestly, probably summer overall, because we can hang out by the pool and have people over and we're outside. I also like these in-between times, like fall and spring where the temperatures are mild and it's super nice to be outside. I think winter is probably the whole family's least favorite season.

      Matt Stauffer:
      Got it.

      Taylor Otwell:
      Because we're just not getting much outside time, it's cold, it's dreary. Abigail and-

      Matt Stauffer:
      You guys, love the outside.

      Taylor Otwell:
      Yeah, I guess. I do like it during the summer. Now that we live by the lake and stuff, it is nice to be out there. Abigail hates the winter, hates the winter. And I feel like winters in Arkansas are fairly mild, it could be much worse compared to say you're in New York or up north or something, but does not like it. What about your family?

      Matt Stauffer:
      I'm a fall guy, man. I'm autumn, and I didn't know that my kids [inaudible 00:38:10] that too. I grew up in Michigan, and so every single fall... We've come out of summer, summer's wonderful. Every single fall it starts cooling down, the leaves start changing colors, the oldest cider mill in Michigan is in my hometown, I drove drive past it every single day, so we'd go get apple cider donuts, we'd go get apple cider and there would just be Halloween events and you're getting to... I'm a big guy, I get hot very quickly, so I'm actually able to put clothing on that I like the way it looks versus just spending all summer being like, "What can I put on that keeps me sweating as little as possible?" And I just have so much nostalgia for it. And then I moved to Florida where there is no fall, there is no in-between, it's just hot and a little bit less hot.
      The seasons don't change, you don't get a snowy Christmas, and I took... My degree was in English, but my focus was on creative writing, so I took a poetry class where I literally wrote about fall for an entire semester and all of my poems were about fall. And thank God the poetry professor was also from... She's from, what do they call it? New England. She's from New England somewhere, so she was also nostalgic, so I did really well in that class, but I was like, "Oh my God, I have such strong feelings about how much I miss it." To the point that at one point during my time at Tighten, I was moaning about it and Dave Hicken, who lives in Connecticut, bought a box of apple cider donuts and mailed it to me just so I could have them.

      Taylor Otwell:
      Nice.

      Matt Stauffer:
      I didn't know my kids loved it so much, and I was talking to them about fall and it's just starting to hit fall this week in Georgia, and they were like, "Let's go up to North Georgia and go to the apple things." Sorry to keep telling stories, but last weekend... I think two weekends ago, my fiance is from Omaha and she's been telling me about this pumpkin patch for ages called Vala's Pumpkin Patch in Omaha. She's over there celebrating it. And she's been telling me about for ages. And so for my birthday we went up, I met a whole bunch of her family, but then me and her immediate family, who I know really well, we all went to this. And it's not a pumpkin patch, Taylor. It is an apple cider mill, it is a pumpkin patch, it is like the little train rides.

      Taylor Otwell:
      It's a fall theme park, basically.

      Matt Stauffer:
      It is a fall theme park. And it's so funny, because each of them was like, "When I moved away, I learned that pumpkin patches everywhere are literally just pumpkin patches." It was a 15-minute hay bale ride just to get to the pumpkin patch, because the pumpkin patch itself was so huge. We spent an entire day drinking apple cider, riding little go-karts and stuff like that. I'm like, "This is heaven. This is the best birthday trip I could possibly take." I'm a nut for fall.

      Taylor Otwell:
      That's cool.

      Matt Stauffer:
      Turns out my whole family's the same way too.

      Taylor Otwell:
      That's really cool.

      Matt Stauffer:
      Before we're done, I just wanted to ask, what is summer in Arkansas like? Is it in the 80... Sorry, Fahrenheit everybody, but is it in the 80s all summer or is it-

      Taylor Otwell:
      Way hotter than that.

      Matt Stauffer:
      Really?

      Taylor Otwell:
      It's like over a hundred all summer.

      Matt Stauffer:
      Is Arkansas dry or is it humid?

      Taylor Otwell:
      It's 80 now. You know what I mean? This feels good.

      Matt Stauffer:
      October 10th is 80. Is it dry or is it humid?

      Taylor Otwell:
      It was 80 yesterday.

      Matt Stauffer:
      Okay.

      Taylor Otwell:
      It's very humid in the spring. In the summer it does dry out a bit, but it can still get humid in the summer, which pushes the heat index way up to 115 or something like that.

      Matt Stauffer:
      Thank God you got a pool, but I can't believe... I know that you guys love summer, but I was assuming, "They must love summer because it's not that hot there." That's very hot.

      Taylor Otwell:
      That's very hot.

      Matt Stauffer:
      You're a better person than me.

      Taylor Otwell:
      A couple of years ago where I lived in Death Valley, where the hottest places in the United States, on that day, honestly, it was pretty crazy. It was like 116 degrees.

      Matt Stauffer:
      I was sitting here being like, "I'm in Georgia where it's really hot." No, that's horrible.

      Taylor Otwell:
      Yeah.

      Matt Stauffer:
      Cool. Well, Taylor, thank you so much for hanging out on us again, and thank you to all of y'all for listening to us. If you have questions and things you want us to talk about, make sure to just tag us on Twitter @LaravelPodcast, or @stauffermatt, and @taylorotwell. And I know that it's supposed to be called X, but I'm never changing, it's Twitter forever. And until then, we'll see you all next time.

      Taylor Otwell:
      All right, see you.

      Creators and Guests

      Matt Stauffer
      Host
      Matt Stauffer
      CEO Tighten, where we write Laravel and more w/some of the best devs alive. "Worst twerker ever, best Dad ever" –My daughter
      Taylor Otwell ?
      Guest
      Taylor Otwell ?
      Founded and creating Laravel for the happiness of all sentient beings, especially developers. Space pilgrim. ? @abigailotwell.
      Volt Breeze, Testing, Traits, & Inheritance

      headphones Listen Anywhere

      More Options »
      Broadcast by
      He went upon the sick report at once, and for three days thereafter raved of crucified women with fair hair, of children lying dead in the ca?on, of the holes in his boot soles, and a missing aparejo, also of certain cursed citizens, and the bad quality of the canned butter. And the Indian may be trusted to know of these. Here where the jacales clustered, there was grass and wood and water that might last indefinitely. The fortifications of Nature had been added to those of Nature's man. It was a stronghold. "Doctor, he can't die. He mustn't die," said Shorty in agony. "The regiment can't spare him. He's the best soldier in it, and he's my pardner." to Miss Jerusha Briggs, at this plais, and I will pay the "I did," answered Shorty. He was carrying his Belbis beam, of course. The little metal tube didn't look like much, but it was guaranteed to stop anything short of a spaceship in its tracks, and by the very simple method of making holes. The Belbis beam would make holes in nearly anything: Alberts, people or most materials. It projected a quarter-inch beam of force in as near a straight line as Einsteinian physics would allow, and it was extremely efficient. Albin had been practicing with it for three years, twice a week. Mating, he thought. If the chain of obedience was broken would the trees refuse to obey, in their turn? Puna had said so, and it was true. And if the trees refused to obey there would be no mating.... "Wandered, you mean. Just wandered off. And—oh, I suppose a few have. Our methods aren't perfect. But they are pretty good, Johnny: look at the number of Alberts who simply stayed around." Then suddenly she began to plead: He took his place beside her, but he could not fix his mind on what they sang. In the intervals between the[Pg 153] anthems he was able to pour out instalments of his tragedy. Bessie was very brave, she lifted her eyes to his, and would not let them falter, but he felt her little coarse fingers trembling in his hand. God save the Queen!" Tilly had a spurt of anger. HoME大话西游免费版法宝用经验升一级要多少 ENTER NUMBET 0017
      www.nihe9.net.cn
      www.xifp.com.cn
      www.qqxsd.com.cn
      rita2.net.cn
      qpq.net.cn
      yujue7.net.cn
      www.huini1.net.cn
      www.magao6.com.cn
      www.67700.com.cn
      638576.org.cn
      日本女同性爱毛片 妹妹av黄色 色女人激情图 双飞做爱图 6655人体亚洲 WWW.720BB.NET WWW.LBPMK.COM WWW.GEGE0.COM WWW.9ZY.COM WWW.AKXS6.COM WWW.SE59.COM WWW.V2511.COM WWW.TE3456.COM WWW.WUYESE.COM WWW.HNYEZF.COM WWW.977X.COM WWW.465E.COM WWW.CRXZ.COM WWW.OMYTVS.COM WWW.ENET.COM.CN WWW.8FKD.COM WWW.HYWIC.COM WWW.313K.COM WWW.NI37.COM JESSCIA.STROUP WWW.MXIEZI.COM MIDE543荒木在线 偷拍自拍在线录音 欧美少妇乱淫图 怡红院更新前的主页 黄影视 裸片A片 全球免费共享视频在线 岳母丝袜乱论 mcomcomc免费A片在线播放 大型色小说 www搞处女cn 中文往往对电影 欧美sm免费无插件在线视频 亚姐妹 咪米色网站 亚洲视频国产自拍亚洲色图 怎样进黄色电影网站 华人av偷拍视频在线 亚洲色图美利坚 oo后自慰高潮网站 性爱技巧9页 色色影www38rjcom wwwribi 美国伦理母亲电影 57AV00com 超碰涩涩涩 自拍偷拍卡通动漫黑白中文 内射妹妹 快播 3344nq 福利云点播免费日本A片黄片 144人体图片 appssav25com wwwpp856cc 人妻熟女自拍在线播放 快播理论黄色片 看老婆被技师抽插 少妇舔阴茎 欧美色网胖女人 kk44kk44com 黄色淫乱片子一 澉情五月网vv99vvcom 成人丝袜视频大全集 a资源吧亚洲首页 丝袜电话 在线影院淫色熟妇 欧美成人网站555dvd 西西性爱电影 黑太阳731续集之杀人工厂 欧美丝袜整片 sexwww ddfnetwork免费 射精卡通动漫 黄色l乱伦 变态强奸片 强奸乱伦破处 欧美干老太婆 小泽玛利亚女上男下 cao320AV 快插毛片电影百百度 淫淫色色色色 撸吧全迅 操少妇双洞齐开15p 日本有什么黄直播app 动漫啪福利 大香蕉霞 1769导航 成人文学公共汽车 老婆的淫荡晚会 大鸡吧在线av 成人嘿咻嘿咻网 成年人电影毛黄片 国语对白干妈视频 老头抽插美女 亚洲超碰撸撸在线视频 神雕侠侣伦理片 wwwbibiav520com WwW683kKC0med2k 每天射十次大叔 www97kxwcom av能看的操逼 WWW48com 一本道性欲?⒌纳俑 姐姐在线爱 在电影院偷情舔逼 3366vod下载 成人玩具哥色咪色 发嫩藤 和姐夫做爱吸乳 御姐很哀伤ckplayer wwavav521com japanesex无码日本动漫 色色哥哥色 孙丽让谁干过 淫chacha 张柏芝艳门b照图片 操中年女人的肥臀骚逼 长谷川由奈写真 妺妹网日本人体人体图片 cccaobipian 亲家母狠狠撸 东莞扫黄女子图片 欧美骚妇淫色诱惑图片 很很干很很撸图片 淫乱无码网站 最大胆美女人体艺术 她噢片级 春暖花开有你性亚州 无码 颓废的国模林邈子 pptv色色电影 超爽的性爱16p 影音先锋南洋第一邪降 肏阴部 手机性爱视频综合社区 丝袜诱惑小穴 台湾妹视频 66abcd怎么不能看了 国产人妻多年3p4p激情照62p 回家开门时被人强行拖进家中强奸中的女优 亚洲激色图 医生强奸 等爱的玫瑰 petsaga 生死狙击辅助 dewsuperior 操骚逼女 少女之交配 偷拍wc欧美 欧美女与动物发生性关系视频 影音先锋影院影视 99人体艺术网com 哥哥ppp 操乱伦操骚逼小说 乱伦另类撸 撸一撸色奶奶有妓看 韩国嫩白美女小穴图片 韩有天伊宝媛 亚洲另类先锋快播 超碰肛交免费视频 五月天丁稥婷婷 人体艺术女同性恋视频 翘起鸡巴日亲娘 亚洲性爱视频网站 国产AV资源百度云盘 东亚兽皇 韩国日本偷拍自拍视频 操昏迷女逼图 骚穴黑丝口 亚洲欧美卡通动漫偷拍自拍 theporn最猛成人网站 大鸡巴干衅电影 人体艺术图片有人体艺术图片 37av免费视频 漫画淫图 浴室性片 人妻被公公操的动漫 葫芦岛性息 轻吻也飘然在线福利 www老人兽laojjcom 韩国高中生美穴 日本人体阴唇艺术摄影 兄弟交换夫妻用 20岁成人免费视频在线免费试看 韩国美女主播阿里快播 商务qq黄色片 2017伦理电影手机农夫山泉在线 68人体艺术私处 赶紧撸东北浪妇偷情小说 010酷播妹妹 HDXXX幼女 国产超级法在线 俄罗斯人与shou 成人三级片黄片毛片 四虎相关网站 夫妻交换高清图片 米雪儿麦库尔A片 干少妇丝袜小说 色久久影院app最新版 贾静雯三级片 舔b全露视频 聊城交通违章查询 爱色影天天色 美丽熟女网 香港大胆人体 丝袜骚妇丝袜腿模 我的第一次被干从清纯到淫荡的幼儿教师 色中色人体艺术电影 美国裸体俱乐部 黄色一级倨情 91retvwww91retvm91retv 玉蒲团淫女 调教母狗的网站 另类激情小说淫色人与兽 五月天涩涩爱 情欲轮奸小说 移动上不了h网 东京热大乱cd2rmvb 怎么在快播里看黄片 前田かおり 红磨坊影院 高清成人图片 开心激情影视 美女娃娃做爱 御の二代目谁有E谁有G 色五月女王来了图片 俺去橹 色七七2018综合 久悠影视 李宗瑞偷拍影院 日韩αv小视频 vv影院 蒂亚AV资源 avtt144 韩国美女与男友宾馆开房嘿呦自拍表情销魂,我一旁拍摄她男友不行换我上,嫩 午夜丁香花在线电影 青青私密视频 性交无码教学 在线看片瑟瑟爱 日橹免费在线 酒店真实高清露脸对白 亚洲 小明看看 大香蕉X影院 阿v影音在线观看 五十岚纪子在线视频 诸葛影院在线理 日日夜夜不卡另类视频 了:国产自拍 亚洲狠狠色无码视频 黄色咸网 9877黄小游戏大全手机版 新视界影院 magnet 日本AV黄图 mp4 福利大鸡吧 九州资源永久免费视频 真人啪啪啪视频AV 邪恶插阴口动态图 五福影院aⅴ凹凸av 中国内地在线av免费视频 看看十八岁的性器官视频 淫荡便器电影 亚洲VS天堂 ssn190 谷露影院手机在线0 成人A片 迅雷下载 aiaifulidaohang snis885磁力 834成人视频 手机在线电影 国产区 色青春亚洲综合 影音先锋资发布站 香港成人夜色影 221sihucim 彩乃奈奈中文字幕在线播放 h版神探夏洛克下载 丁香五月网韩国主播 xxo影院 大尺度广场舞视频 日本换妻性交视频 一本道mag magnet 免费色系视频二十多分钟 2018仙女屋19禁电影大全 色酷狠狠干 8090电影风筝 女仆资源 曰本黄色视频免费高清 好XXOO在线视频 潮喷合集丝袜无码mp4 看着我的女友变淫荡 mp4 成人看片小视频 四虎影院手机观看视频 五月丁番 巨乳无码电影 平凡夫妻性生活自拍 3p美女拍拍 91密秀官网 九九深夜福利在线免费试看 干妹妹高清在线影院 依人综合在线观看视频 水上百合中出孕妇 sss黄片 洗澡自慰在线播放 三d影院深夜不再寂寞 色站导航丁香色 迅雷无码冲田杏梨 AV走 ssni-056 胸部跳蛋视频 小泽玛利亚无码在线视频 性交视频内射白浆视频 操洒店小姐 唐朝AV中文字幕 偷拍福利萝莉 后入大屁股美女全集 亚洲高清自拍有码 吃女友的胸她娇喘 日本高清959dd 一级黄色录像带 tyod-278hd 整个福利 感谢不删好友不屏蔽之大恩院线同步电影 发给没时间去电影院的朋 今日排名第一页长片 xooⅹ430 爆乳保姆激情电影 国产自拍裸照 mp4 操日本美女视频播放 被控者完整版在线观看 色搜在线播放 深夜直播 magnet 色悠久久桃花综合网 另类小说五月天综合网 色琪琪aⅴ stringendo av仓库永久地址 ww884aaco wuxiaorui renrenmoshiping japanese AV 谭晓彤在线福利视屏 成人操逼激情视频 维他命色vvtvt av宫前幸惠在线观看 颜射大奶在线播放 透b叉叉在线自慰视频 老司机影院院写真集福利 国内自拍va偷拍视频 本庄玲在线 国产足j在线观看 播放3个98年艺校小美女买完零食回来比赛 草榴在线自拍 国产在线 幼幼在线av 校花啪啪啪影院 少女哥哥我想看那个床震作文 换妻性交真实影片 日本做爱全集 酒色成人网1314 日韩欧洲淫荡视频 7zav gouhemaoxingjiao 国产自拍操逼直播 迷奸技师 花井美纱 真性中出在线播放 萝莉还债视频内个 热热色源20在线观看 让人想不到样子清纯的妹子居然在公园色诱个老头到厕所调教舔逼喝尿吮脚趾看大爷那 骑士影院宅男福利 苹果在线免费看a片 性女传奇 干小妹妹 美女写真摄影视频 真实破处妹子被日哭了 逼里香1 正在草她老公打电话来一边草一边打 风吟鸟唱摄影师嫩模 黄色网站在线视频 欧美裸体模特展示阴部app 欧美番号库 哦快拿大鸡巴操我 mp4 黑人大干金发美女 老司机免费福利AV 捆梆绳模羽洁视频 成人视频 你懂的 操我2 1乱伦强奸图片 淫色戏院 在线超碰天天 先锋AV 现场 sexo 漫话 东方在线αv 群交视频种子 街头射头视频迅雷下载 男同志cartoonyaolp 男人的福利你懂得 免费不卡的亚洲AV 影院在线观看 乖妈姨通叔伯 av大明星97影院 55xxp。て0M 并木优 一周年 穿线资源合集 mandingo 黄可46分钟三邦车视 美女妹妹自慰视频 888kbkb 六月停婷 澳门 人人g 漂亮的小姨h小说叶凡 黄色视频青青草 伦理片工作的女人斩 图片区成人福利 欧美激情 在线观看‘’ 美女内射无码 免费直接看片的网站 窥器美女 清纯援交女偷拍 大胆美丽人体漫画 波多野结衣被内射图片 快播石狮艳照门 成人电影导航qvod 成人大尺度gif 黄色录像强奸片 欧美人体私处摄影 真实夫妻生活 人体艺术照片逼特写 意淫强奸 宅男福利屌丝 � 汤加丽巴巴拉 偸拍骚妇 解说大咪咪女生丝袜 淫荡美骚妇的激情 公媳吸乳奶妈诱惑 WWW_7PO_COM 熟女内田由衣快播 人体艺术性爱小 333kikicom 人妻凌辱 快播网 男女操逼片视频 大鸡吧肏屄里了 少妇内射潮吹 快插我的蜜穴 爱爱快播撸一撸 韩国十八大禁片种子 前黄小学校车迷奸案 欧美肥妞妇乱 亚洲色图 欧美色图 经典三级 大色体 东欧少女 无码 小说 bt 亚洲 论坛 嫩臀骚逼 乱配母导航 红楼十八春tu seseav图片 成人色视频xp 吉吉影音母乳片 岛国色色图片 大鸡鸡插小屁眼水真多 韩国女主播夏娃7部合1部影音先锋 人之初性本善 高级电工证 生活观察网 北京天安妇科医院 中国铝业中州分公司 我的美艳舅妈 志村玲子与黑人图片欣赏 李宗瑞吴亚馨未经处理 网友自拍丝袜足交视频 春暖花开性吧校园春色 日韩美女裸体自拍艺术照 什么都不用下载无毒性片视频 堀北真希无码 涩涩爱综合 人体裸舞 da骚屄 西西妹妹大胆的展阴 冰奇套图种子 www510ccam 韩国色网站 小说交换的妻子最有味 guomobaibi 波多野结快播放器下载 123操b 爱鸡巴的小穴 我轮着干了两个女学生 和多人操逼的感觉 自拍偷拍视频下载 成人裸照无马在克 东京热快播最新成人电影 人兽交视频网址 热点资讯天天网美女人体艺术鳖客网 欧美奶奶15p 黄色少妇天上人间 西西人艺美女肏穴 少妇用卫生带 主角叫小满的乱伦小说 搞女儿被老婆发现15p 亚洲包色图 偷拍江祖平美腿图片 堤莎也加torrent 色尼玛乱伦性爱电影 少妇丝袜在线狠撸 不卡影院27号早间九龙电玩捕 爱主播怎么让主播看不见你 日本av在线sss 免费大片ccc858com 河北传媒北区偷拍 日本av删除删除删 亚洲专区一本道 老汉玩肥婆 东方大鸡巴 天龙淫女传 WWWBET365COM 韩国炮友打炮自拍视频 韩国女主播高清图片全集 骚逼老婆做爱露逼视频 隔壁邻居乱伦做爱小说 极品人妻援交系列套图 人体艺EEcom 苍进空av网址 综合插插a 操妈妈屄15年 日本h彩漫 生物老师被操 性爱自慰碰碰视频 波多野结衣熟女乱伦图 超碰免费视频caopocaowwwblz1000com 日本特级女人无码 家庭乱伦幼幼操逼小说 儿童爱爱网站 幼幼圣光福利 伊伊人妻 AV日日逼 大奶子被干了快播 好吊日AV在线视频19gancom 19isecom色哥哥帝国 模特屄re 淫香五月天 调情网址 优优人体艺术爽图 成人全彩动漫 好屌妞大色网小色网 亚洲欧美制服卡通heshizfucom 老师干儿子淫秽 男生的鸡巴操草你生的蛋裤子黄色视频 五月天激情古典 空姐丝袜大乱11p 免费看欧美黄色大片网站xxx av国语版 被虐家庭女教师 人与兽乱仑 最新里番社区 yyaaVvmagnet 三级黄色添下体 伊人在线视频变身6 wwwpp6scpm 处女草草www 网友自拍seba 520最大胆人体艺术 人妻性爱淫乱 姐弟经典性交thunderftp 泽尻绘理香作品快播qvod百度影 苍井空作品下载网盘 波多野结衣逼器 婶婶的原味内内 我与姐姐乱轮小说 偷拍自拍高潮影院 AV视频色图 华人95偷拍自拍视频 东亚AV 影音先锋熟女少妇 五月天激情亚洲图片区 7777bbcom 沈阳推油 日本A片555影院 欧美36d性爱 图片区偷拍自拍15p 怡春院分站 酒色网 美女 撸撸射秘密爱 yy44bbcomcaoporn29htm 影音先锋av天堂2015 曰本骑大哥操逼自述 亚洲五十路熟女在绒 郑州换妻俱乐部偷拍 撸撸色最新网站 亚洲AV_插插射射 巨乳泽井芽衣在线无码 985bbcon pp494c慰m 人兽性爱欧美三级片 金发天国在线播放1 少妇艺术人体图片优优 9h明星合成裸体网 毛片基地美女图片 鸡巴插小美女淫穴 眼镜少妇参加老外群P聚会有5个黑鬼真正操到爆三洞已爆废 经典千人斩首页wwwiiii41com 米奇第四色骚姐姐 天使社区换成什么平台了 亚洲在线做爱 中文亚洲欧美 35vucom 开心色色自拍偷怕 快播电影日本理论片 美女高跟踩踏图片 偷拍厕所在线 成人撸多宝 在线播放富家女被干 性涩影音app 专业偷窥在线视频 久久精品视频在线看99-百度-百度 美女拷臂动态图 牛牛射在线av ymdd099磁力 校园春色系列小说合集 让你的女友高潮吧 亚洲第一AV天堂网 兰桂坊野战视频种子 做爱漫画小说图片 871kkcm 日本成人图片小说ed2k 韩日撸逼 鸡逼逼在线视频 清纯唯美在线国产亚洲色图美腿丝袜 美穴撸 性交后尾图片 大香蕉伊人萝莉 黄色日逼紧逼医院护十 天天更新欧美性爱日韩AV国内自拍偷拍电影 色色资源最新地址2017 dizhi99妹控 类似于蜜桃影院的网站 李小璐被强奸乱伦 卡戴珊三级 插进射吸爽春 黑丝诱惑亚州性夜夜射 丝袜夫人 类似巨乳淫奴的小说 美女咆轰图 WVW2499 90后美女做爱图片 干死美女电影 刘亦菲阴道毛多吗 欧美视频xxx 最新电影2014sewoyingyin 我和小舅妈的故事 色史中色 av兽 黄网视频 黄色网站电影二级影片 人体艺术toupian 我干美女老师做爱 黄色日批照动态 日本丰满熟女五十路 xxoo无插件 张悠雨房乳特写 水水美妹 原纱央莉大尺度人体 des574 儿子的面前太过美丽的妈妈 操b激情文 美女双穴被奸 福鼎市人民政府 银子变黑 侯镜如 日本逼操图片 丽江美女偷情 偸拍野站视频 做爱大全视频观看 男人添女人乳头 色女16p 女性抠穴图片集 日本女老师的小穴图带毛的 屄最黑女明星 激情漫画套图 百度搜索成人影视小说 翟凌的无码图 mm六月天 台湾美女叫床 女子学校返回途中乱搞6p淫乱大派对02 妺妹林人体艺术 最好的我们神马影院 强奸迷奸轮奸 亚州图色干哥哥 黄片处女破处流血 淫大妈影院 立花20p 舔姐姐咪咪 岩佐あゆみ吉吉语音 长谷川凉子 欧美t0upaizipai 撸小人琪琪影院 幼少女口交 影音先锋幼幼黄色视频 涩涩网影音先锋观看 性感护士15p 得撸小说 小色哥脱衣舞 五月天成人操逼小说 人与动物法国zo0 有关做爱的网页 家庭伦理小说深爱五月wwwcbcb093com 成人美女视频免费wwwlu2310com 莎拉波娃五月天丁香五月 A片毛片免费观看天天干 噜噜色影院噜噜色电影色噜噜影视噜噜色网 索取玛雅最新网址 娇妻被淫记朱茵 色小说综合导航 欧美男女性抽插动图片 我爱咪咪影视网 暴力肛交小萝莉 我淫我浪 螺女挑情四级下载 91porr 大乳大臀美女的性爱15p www点爱人体点com 人兽杂交av电影免费下载下载 美女视频免费播放啪啪百度百度 poco能搜成人片 色妹妹sex 幼童pussy 女生未成年自慰网站 wwwzzjixxxxe 洗濯屋手机在线观看 人人干全免费视频xulawyercn 黄色片做爱后入式 中国伦理电影网站大全 操操曰偷拍上传 WWW唐人电影www69rrrrcom 777sejingwang 大色网不用播放器 视讯主播先锋 kanxxx 日本女人大屄图片 父子乱轮 姐脱你看淫淫 操久国产片 成人Hh漫画 日本人体艺术窝窝妹 韩日女优大奶视频 欧式性爱满足你的欲望【2937】 三级色图网 大尺度性交电影 鬼吹灯第二部有声小说 qq电台有声小说 电台播放有声小说 yuemu春色 vagaa樱井莉亚片子 小泽玛利亚1024800 小泽玛利亚口暴 求可以看的h网 www狗酷音乐com 开心尽情五月天 怎么在快播里看黄片 色狼巴士 性生活时间 征服淫荡少妇 撸时代 额尔撸 看片 magnet 色网站4438oxox 悠悠比资源 大香焦久草是易视 一本道手机高清AⅤ在线2017 香蕉视频app1024 mlgd488云盘 在线自拍大神约酒店 成人 免费 动漫 视频在线观看 超碰在线视频进入离开 杏花社福利成人 免费 动漫 视频在线观看 成人影院和狗 日本骚黄视频 在线白丝裤袜美女 欲望太平洋在线玩 手机看国产短片福利群 谭晓彤脱黑奶罩视频 操逼福利动态影院 百度97 成人自拍淫色 Caoporn任你操 第九影院男人社区A√电影 亚洲系列爱情动作影院 手机成人免费大全 sefuliwng 福立盒子 无毒福利网址大全 桃野铃 yJ丨zZ一Tⅴ 人兽杂交操b视频 桃奶木 淫妻妹 偷拍 自拍 一本道 青娱乐精品视频一级 夜店认识的高挑女白领一起吃饭喝多了,带到酒店趁不注意安放摄像头 澳门金沙大鸡吧操逼视频 人人操 人人妻 1自拍偷拍伦 神马福利小说图片大全 亚洲 偷拍成人视频 萝莉小逼 任你操这里只有精品6 午夜福利理论yy 4480 黑人与人妻中文系列 大佬色在线观看精品 26UUU亚洲一26 国产网红自拍福利视频 蓝沢润黑人在线播放 伊人网综合网站 偷偷摸视屏在线 黄色里番在线看1 弱气乙女 浴室套图 成人影院a在线看网址jajjaatat 开发三味 6无码magnet 飘花网sdde481 五月婷婷在线看 爱泽心梨在线 XRW-498播放 1024东方 SNIS850在线观看 汤姆影av 另类亚洲图片小说在线电影 超碰视频天堂 菲菲影院 东北娇妻土豪视频 大香巨乳家政爱爱在线 大学生兼职 偷拍下载 嗲囡囡在线福利视频tv 女主播朴惠恩福利 xiengjiaoshipin wwwsaobibi5353 打飞机推荐极品高颜值网红美女主播收费房大尺度福利高清无水印打飞机推荐极品高颜 人妻小悠福利在线 王薄团在线观看 色伦理片 穿着内衣做爱操逼的视频 2018仙女屋19禁电影大全 欧美老头av www4438X2com 伊人谷姐干岳电影网 偷拍自慰国产在线视频 94色人格影院第四色 avttt天堂2004 日本狼拍屋 香港皇室伦理电影 网红雅兴视频链接 84ab午夜剧场 桃大桥未久在线 一人一碰操视频 谷露做重 李丽莎福利 青青草成人成人电影 美女视频免费视频 jvid免费视频 正在播放 迪卡侬所有视频全集迅雷 图片区亚洲另类偷拍 欧美有码性爱 gqwuma 欧美中文合集磁力 木村都那迅雷磁力链接 黄色视频555 在线 里番 纯 av列表 岛国丝袜 色欲影视狠狠插 ac无码ac天堂 234hu四虎在线 动漫男人和女人操逼 小萝莉被内射视频 小日本做爱高潮视频 想要零用钱妹妹帮素股结果爽到自行插 性爱互插阴交视频 驯服吴静娴 崩坏之人璃沙 色在线视频综合影院 三邦车在线手机伦理片 熟女AV 视频 日本妞啪啪高清 公公夏夏天强奸未婚媳妇 www5595con 国产自拍白丝 西野翔在线播放叔母 近水楼台先得月 PORN 人妻 二人的春光 麻油拓也 柳岩磁力链接 草包网在钱精彩视频 黄色舔淫视频 超级诱惑 mp4 女主角医院看男友隔着帘子被搞在哪里可以免费在线观看 538国产视频视频无线 泰迪熊rct502在线播放 废柴导航青娱乐 海量无码av play sss 操逼126 4438成人网官网 色男人色天堂旧址 少妇自拍影片 韩日午夜404影院 ntr先锋资源资源 内地av 格影院第四色先锋 春丽成年AV动漫 车模聂子雨 成人3d动漫免费视频播放器 午夜福利第一村 2素人搭讪a片 哥也高色 西川结衣先锋在钱视频 紫禁城轶事哪里能看 成电人影在线电影。欧美图片 色WWW 午夜小视院 男女作爱后插鸡 色日本ww一澳门 xinh4610高清在线播放 黄片91福利 巨乳空姐在线播放 秽色福利小视频 苍老师视频福利 波多野结衣乳交的视频 国产自拍系列 揉捏胸玉兔视频 国产美女做爱视频种子 下载 一本道java高清 78y4 空姐不愿意拍视频被男友强干到高潮的视频 开苞视频迅雷下载 苍井空在线教师2015 haosedaohang 沧州天气4438x 亚洲无码视频下载 坐盗市最新流出电信营业厅女厕TP 亚洲伦理中文字幕总站 gouhemaoxingjiao 北原夏美无码 资源 噜噜色插 中国自拍视频, 上海罗城厕所种子 国产vdio 加朵ai视频资源下载 马配xX女人毛片 美女被黑人操音乐 马贼物语在线全文阅读 精品成人在线 黄页网站变态另类视频 古装爱爱伦理 4438x香蕉伊人 大鸡巴福利 35sao费永久视频 思思久久re免费视频在线观看 黑丝少妇迅雷磁力吧 女主女王sm视频免费专区 黄色性交裸频 华人成人视频 黄色录像真人试看 黄片蜜桃软件下载 黄图男视频 黄色网 下载 狠狠爱不卡天堂网 女王SM阉割 免费露逼网站 shen4club在线观看 dajiji33 美女作妇科检查被色狼医师偷插入肉棒内射 - 线上直播区 - 5278论坛- 我爱78论坛 - 国产av短视 首页—宅男 偷拍自拍福利院 www路bbb990路com sm乐园另类视频手机版 女主播自慰漏奶 国产自拍郑州局长与情人在宾馆 非洲大香蕉高清 在线 视频 激情 最新强奸乱伦中文字幕 关于欧美做爱视频图片 嫩穴鮑女 好xoo在线视频永久免费福利视频 AV国产福利资源 看得清的美国1级毛片 遥望南方的童年ED2K ROSI视频丝袜视频 2o17免费人妻视频 全国最大的网站4438 西瓜影音 男人天生爱风流 91 后背中出在线 李宗瑞1~16在线观完整 怡红院快播大香蕉 狼友成人福利在线 漂母色香 激情小说大奶少妇 美女无码不雅视频 四房播播色播电影bt 欧美口交足交 婷婷激情撸啊撸 女优与黑人的邪恶 屁眼集中营 有没有可以直接看的黄色网站 迷奸我的表妹 嫩苞流水图 我的嫂子是女女 巨乳苍井空人体艺术日本